[Tkinter] messed callbacks
Scott David Daniels
Scott.Daniels at Acm.Org
Wed Sep 9 10:29:13 EDT 2009
More information about the Python-list mailing list
Wed Sep 9 10:29:13 EDT 2009
- Previous message (by thread): [Tkinter] messed callbacks
- Next message (by thread): [Tkinter] messed callbacks
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Giacomo Boffi wrote: > Giacomo Boffi <giacomo.boffi at polimi.it> writes: ... > | def create_cb(a,b): > | return lambda: output(a+'->'+b) > | > | def doit(fr,lst): > | for c1,c2 in zip(lst[::2], lst[1::2]): > | subframe=Frame(fr) > | Label(subframe,text=c1+' <-> '+c2).pack(side='left',expand=1,fill='both') > | Button(subframe,text='>',command=create_cb(c1,c2)).pack() > | Button(subframe,text='<',command=create_cb(c2,c1)).pack() > | subframe.pack(fill='x',expand=1) ... > works ok, now i have to fully understand my previous error This is really why functools.partial exists. Now that you know what was going wrong, you can understand its value. You can accomplish the same thing as above with: from functools import partial ... def doit(fr,lst): for c1, c2 in zip(lst[::2], lst[1::2]): subframe = Frame(fr) Label(subframe, text=c1 + ' <-> ' + c2 ).pack(side='left', expand=1, fill='both') Button(subframe, text='>', command=partial(output, c1 + '->' + c2)).pack() Button(subframe, text='<', command=partial(output, c2 + '->' + c1)).pack() subframe.pack(fill='x', expand=1) ... Also note from Pep 8, spaces are cheap and make the code easier to read. --Scott David Daniels Scott.Daniels at Acm.Org
- Previous message (by thread): [Tkinter] messed callbacks
- Next message (by thread): [Tkinter] messed callbacks
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list