<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-2">
<META content="MSHTML 6.00.2900.3314" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Ahoj</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Při práci s knihovnou Wx jsem narazil na takový
problém. Ve své aplikaci mám jedno hlavní okno. Pak se ale ještě musí občas
otevřít další okno. Toto okno otevírám pomocí vlákna (threadu), ale nějak to
nefunguje (první okno je OK, ale druhé se "zasekne"). Zde je můj
kód:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>#-*- coding: utf-8 -*-<BR>import re, time<BR>import
thread,threading,
socket,wx<BR>DEFAULT_HOST='localhost'<BR>DEFAULT_PORT=1991<BR>class
ReceiveEmail:<BR> def
__init__(self):<BR> while
1:<BR>
self.send_warning("some
warning")<BR>
time.sleep(15) <BR> def
send_warning(self,what):<BR> s =
socket.socket(socket.AF_INET,
socket.SOCK_STREAM)<BR>
s.connect((DEFAULT_HOST,
DEFAULT_PORT))<BR>
s.send(what)<BR> s.close()<BR>class
Server(threading.Thread):<BR> def
__init__(self,prijimaci_funkce):<BR>
self.prijimaci_funkce=prijimaci_funkce<BR>
self.S = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)<BR>
self.S.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,
1)<BR>
self.S.bind((DEFAULT_HOST,DEFAULT_PORT))<BR>
self.S.listen(5)<BR>
threading.Thread.__init__(self)<BR>
self.start()<BR> #Start
thread:<BR>
thread.start_new_thread(ReceiveEmail, ())<BR> def
run(self):<BR> while
True:<BR>
try:<BR>
newS, address =
self.S.accept()<BR>
receivedData =
newS.recv(1024)<BR>
self.prijimaci_funkce(receivedData)<BR>
newS.close()<BR>
finally: pass<BR>
self.S.close()<BR>class EmailWarningWindow:<BR> def
__init__(self):<BR>
self.okno=wx.Frame(None,title="Second Window",id=1987,size=(490,340),style
=wx.SIMPLE_BORDER|wx.STAY_ON_TOP)<BR>
wx.StaticText(self.okno, label="some
text")<BR>
wx.Yield()<BR>
self.okno.SetAutoLayout(True)<BR>
self.okno.Show(True)<BR>class App:<BR> def
__init__(self):<BR> okno =
wx.App(0)<BR>
self.okno=wx.Frame(None,title="First
window",id=-1,size=(490,340))<BR>
Server(accept)<BR>
self.okno.Show(True)<BR>
okno.MainLoop()<BR>def accept(data):<BR> #Run the second
window; <BR> EmailWarningWindow()<BR>if __name__ ==
"__main__":<BR> App()<BR></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>První okno se otevře, to je funguje, ale to druhé
stále pouze zamrzá. Co s tím?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Děkuji</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Jakub Vojáček</DIV></FONT></BODY></HTML>