Tkinter menu commands activate when menu is built

Greg Krohn volucris at hotmail.com
Sat Nov 10 04:34:05 CET 2001


'command' needs to be a assigned a function, not the value returned from the
function (in this case None). Here lambda is you friend. try this instead:

connectmenu.add_command(label="Example 1", command=lambda n=1: do_stuff(n))
connectmenu.add_command(label="Example 2", command=lambda n=2: do_stuff(n))
connectmenu.add_command(label="Example 3", command=lambda n=3: do_stuff(n))
connectmenu.add_command(label="Example 4", command=lambda n=4: do_stuff(n))

or even:

for num in range(1, 5):
    connectmenu.add_command(label="Example %d" % num, command=lambda n=num:
do_stuff(n))


greg





More information about the Python-list mailing list