[python] Thread a wxpython
Zdravím, mám takový problém, když vytvořím jakýkoliv obejekt wxpythonu ve vláknu, tak po dokončení toho vlákna zmizí. Já bych potřeboval aby zůstal. S vlákny teprve začínám. Jednoduchý příklad: # -*- coding: utf-8 -*- import wx import thread class Okno: def __init__(self, parent): self.okno=wx.MDIChildFrame(parent,title=u"Test",id=-1) self.okno.Maximize() thread.start_new_thread(self.funkce,()) def funkce(self): self.promena=wx.StaticText(self.okno, label=u"Test") if __name__ == "__main__": okno = wx.App(0) parent=wx.MDIParentFrame(None,size=wx.Size(500,500)) Okno(parent) parent.Show() okno.MainLoop() Díky za pomoc ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Thread a wxpython
Ahoj. Mě ten tvůj příklad moc nefungoval, musel jsem přidat pár volání metody Show. A i tak ten příklad fungoval jen někdy; sice neznám wx, ale myslím, že stejně jako u ostatních GUI toolkitů, nelze jen tak kombinovat volání z různých vláken, tedy přinejmenším bez nějaké synchronizace, viz dokumentaci wx. Zajímavé je, že mě žádné objekty nemizely, program spíš SIGSEGoval nebo se špatně vykreslily znaky. (Snad nevadí, že odpovídám na dva měsíce starý dotaz; neznám místní zvyklosti.) P.M. On 16 Čec, 14:34, [EMAIL PROTECTED] wrote: Zdravím, mám takový problém, když vytvořím jakýkoliv obejekt wxpythonu ve vláknu, tak po dokončení toho vlákna zmizí. Já bych potřeboval aby zůstal. S vlákny teprve začínám. Jednoduchý příklad: # -*- coding: utf-8 -*- import wx import thread class Okno: def __init__(self, parent): self.okno=wx.MDIChildFrame(parent,title=uTest,id=-1) self.okno.Maximize() thread.start_new_thread(self.funkce,()) def funkce(self): self.promena=wx.StaticText(self.okno, label=uTest) if __name__ == __main__: okno = wx.App(0) parent=wx.MDIParentFrame(None,size=wx.Size(500,500)) Okno(parent) parent.Show() okno.MainLoop() Díky za pomoc ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Thread a wxpython
A je Vám známo, že všechny grafické knihovny jsou dělány na jedno vlákno? A že neumí korektně zacházet s tím, když jim ve více vláknech ovládáte grafické objekty? A pokud ano, tak se to musí speciálně ošetřovat, a není to úplně snadné? Ono totiž udělat multithreadovou knihovnu nese značnou režii. Je to složité, a vzniká při tom řada problémů, které se ne vždy dají vyřešit. Protože principiálně nelze všechny problémy u multithreadových rozsáhlých knihoven vyřešit, a protože v případě grafické knihovny ani nemá moc smysl se příliš snažit o multithreading, bývají grafické knihovny tvrdě single task. V případě, že se bez dalšího ošetření pokusíte použít knihovnu jako multi thread, pak se může stát cokoli, od zhroucení knihovny, přes neintegritu vnitřních datových struktur, až po různé obranné akce knihovny jako rušení objektů, či násilné uvolňování různých API. S grafickými knihovnami se pracuje tak, že je řídí jedno vlákno, pokud nejsou vážné důvody dělat to jinak. Miloslav Ponkrác [EMAIL PROTECTED] napsal(a): Zdravím, mám takový problém, když vytvořím jakýkoliv obejekt wxpythonu ve vláknu, tak po dokončení toho vlákna zmizí. Já bych potřeboval aby zůstal. S vlákny teprve začínám. Jednoduchý příklad: # -*- coding: utf-8 -*- import wx import thread class Okno: def __init__(self, parent): self.okno=wx.MDIChildFrame(parent,title=uTest,id=-1) self.okno.Maximize() thread.start_new_thread(self.funkce,()) def funkce(self): self.promena=wx.StaticText(self.okno, label=uTest) if __name__ == __main__: okno = wx.App(0) parent=wx.MDIParentFrame(None,size=wx.Size(500,500)) Okno(parent) parent.Show() okno.MainLoop() Díky za pomoc ___ 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