[python] WxPython :: Problém s vláknem
Jakub Vojáček
jakohv na seznam.cz
Středa Duben 16 16:38:19 CEST 2008
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
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20080416/a7584cde/attachment.htm
Další informace o konferenci Python