Jakub Vojáček wrote:
> Jo, to je dobrý napád, ale jak ho realizovat?
> příklad:
>
> from Tkinter import*
> okno=Tk()
> p=True
> def ok():
> while p:
> print "sss"
> def stop():
> p=False
> Button(text="zacni",command=ok).pack()
> Button(text="stpL",command=stop).pack()
> mainloop()
>
> To tlačítko stop se nedá zmáčknout, proto by se to asi mělo dělat přes ty
> vlákna.
> Abych uvedl příklad tý akce co může trvat dolouho, tak například výpis
> prvočísel do 10000.
> Další možnost je volat externí skript s parametrem a ten by výsledek pak
> uložil do souboru, ale to by bylo složité a blbě funkční
>
>
Ja myslel, ze to pisete ve wxPythonu, tam se to da udelat velice hezky a
bez pouziti threadu. Nasledujici priklad je opis vaseho prikladu:
class Trida:
def __init__(self):
Button(text="zacni",command=self.ok)
Button(text="stpL",command=self.stop)
self.p = True
def ok(self):
while self.p:
print 'sss'
wx.Yield()
def stop(self):
self.p = False
Priklad je jen nazorny zpusob, jak to jde udelat. Jinak tento priklad
jste mel v te referenci, kterou jste uvedl:
http://wiki.wxpython.org/index.cgi/LongRunningTasks
Doporucuji take poradne nastudovat fci wx.Yield, protoze muze dochazet
treba k opetovnemu kliknuti na stejny button, takze se tam musi dodelat
disable apod. Mimo jine, vyuziti tohoto zpusobu dojde k i tomu, ze
nebude aplikace "zamrzavat" po dobu vypoctu, pokud tedy nebude trvat
jeden cyklus ve while dlouho.
Leo
--
----
Leos Pol
SW Engineer
Radiante Corp.
If it can be imagined,
we can implement it
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python