Nevim, proc mu na ten dotaz odpovidate, kdyz neumi dodrzet ani zakladni pravidlo konference :-(
TB Dne 30.10.2006 10:27, Petr Prikryl napsal(a): > Od Python 2.5 lze taky využít nový standardní modul > functools a jím definovanou funkci partial() -- > viz dokumentace > > "6.6 functools -- Higher order functions and > operations on callable objects. " > > Příklad pak lze přepsat takto: > > import functools > from Tkinter import* > > def pis(co): > print co > > okno=Tk() > menubar = Menu(okno) > menu = Menu(menubar, tearoff=0) > cisla=[1,2,3,4,5,6,7,8,9,10] > > for prvek in cisla: > menu.add_cascade(label=prvek, > command=functools.partial(pis, prvek)) > > menubar.add_cascade(label="cisla",menu=menu) > okno.config(menu=menubar) > mainloop() > > Radek Kanovsky > >> Radek Kanovsky wrote: >> >> >>> Aby to fungovalo, musi se pouzit nejaky trik: >>> lambda p=prvek: pis(p) >>> nebo >>> new.instancemethod(lambda p:pis(p), prvek, type(prvek)) >>> >> Ale necistsi reseni bez triku (a jeste pomerne kratke) je asi tohle: >> >> def gen_pis_prvek(prvek): >> return lambda: pis(prvek) >> >> for prvek in cisla: >> menu.add_cascade(label=prvek, command=gen_pis_prvek(prvek)) >> > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python