Ahoj
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:
#-*- coding: utf-8 -*-
import re, time
import thread,threading, socket,wx
DEFAULT_HOST='localhost'
DEFAULT_PORT=1991
class ReceiveEmail:
def __init__(self):
while 1:
self.send_warning("some warning")
time.sleep(15)
def send_warning(self,what):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((DEFAULT_HOST, DEFAULT_PORT))
s.send(what)
s.close()
class Server(threading.Thread):
def __init__(self,prijimaci_funkce):
self.prijimaci_funkce=prijimaci_funkce
self.S = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.S.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.S.bind((DEFAULT_HOST,DEFAULT_PORT))
self.S.listen(5)
threading.Thread.__init__(self)
self.start()
#Start thread:
thread.start_new_thread(ReceiveEmail, ())
def run(self):
while True:
try:
newS, address = self.S.accept()
receivedData = newS.recv(1024)
self.prijimaci_funkce(receivedData)
newS.close()
finally: pass
self.S.close()
class EmailWarningWindow:
def __init__(self):
self.okno=wx.Frame(None,title="Second
Window",id=1987,size=(490,340),style =wx.SIMPLE_BORDER|wx.STAY_ON_TOP)
wx.StaticText(self.okno, label="some text")
wx.Yield()
self.okno.SetAutoLayout(True)
self.okno.Show(True)
class App:
def __init__(self):
okno = wx.App(0)
self.okno=wx.Frame(None,title="First window",id=-1,size=(490,340))
Server(accept)
self.okno.Show(True)
okno.MainLoop()
def accept(data):
#Run the second window;
EmailWarningWindow()
if __name__ == "__main__":
App()
První okno se otevře, to je funguje, ale to druhé stále pouze zamrzá. Co s tím?
Děkuji
Jakub Vojáček_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python