[python] (no subject)
Tomas Brabenec
konference na brabenec.net
Úterý Říjen 31 07:32:36 CET 2006
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 na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
Další informace o konferenci Python