|
|
5鱼币
本帖最后由 舒方 于 2016-5-25 13:15 编辑
wxpython 使用多线程之后还是未响应
queue = Queue.Queue()
infoGripper = InfoGripper()
class WorkerThread(threading.Thread):
"""
This just simulates some long-running task that periodically sends
a message to the GUI thread.
"""
def __init__(self, queue,threadNum,startpg,endpg,windows):
threading.Thread.__init__(self)
self.threadNum = threadNum
self.queue = queue
self.window = windows
self.startpg = startpg
self.endpg= endpg
def stop(self):
self.timeToQuit.set()
def run(self):
max_SQLdate = infoGripper.CX_maxDate()
sql = 'insert into Fi values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'
while True:
data = self.queue.get()
page = str(int(data.split("=")[-1])/10+1)
print page
pub.sendMessage("update", message=page)
wx.CallAfter(pub.sendMessage, "update",message=page)
time.sleep(5)
#wx.CallAfter(self.window.updateDisplay,page)
#采集数据
#infos = infoGripper.get_info(data)
#infoGripper.SaveSQL(infos,sql,max_SQLdate)
#wx.CallAfter(self.window.updateDisplay, u"采集完")
class MyFrame(wx.Frame):
def __init__(self):
font = wx.Font(10, wx.DECORATIVE, wx.NORMAL, wx.NORMAL)
wx.Frame.__init__(self, None,-1,u'采集',size=(500, 450))
panel = wx.Panel(self, -1)
Rbox = wx.BoxSizer(wx.VERTICAL) #纵向box
Cbox0 = wx.BoxSizer(wx.HORIZONTAL) #横向box
start_lable = wx.StaticText(panel,-1,u"起始页:",size=(80,30),style =wx.ALIGN_CENTER)
Cbox0.Add(start_lable,proportion = 0,flag =wx.LEFT,border = 100)
self.E1 = wx.TextCtrl(panel,-1,size=(200,30))
Cbox0.Add(self.E1,proportion = 3,flag =wx.LEFT,border = 10)
Rbox.Add(Cbox0,flag = wx.TOP,border = 50)
Cbox1 = wx.BoxSizer(wx.HORIZONTAL)
end_lable = wx.StaticText(panel,-1,u"尾页:",size=(80,30),style =wx.ALIGN_CENTER)
Cbox1.Add(end_lable,proportion = 0,flag =wx.LEFT,border = 100)
self.E2 = wx.TextCtrl(panel,-1,size=(200,30))
Cbox1.Add(self.E2,proportion = 3,flag =wx.LEFT,border = 10)
Rbox.Add(Cbox1,flag = wx.TOP,border = 20)
start_lable.SetFont(font)
end_lable.SetFont(font)
Cbox4 = wx.BoxSizer(wx.HORIZONTAL)
list0 = []
choices = wx.Choice(panel,-1,(90,18),choices= list0)
Cbox4.Add(choices,proportion = 0,flag =wx.TOP,border = 20)
Rbox.Add(Cbox4,flag = wx.LEFT,border = 200)
Cbox3 = wx.BoxSizer(wx.HORIZONTAL)
self.jindu = wx.StaticText(panel,-1,u"进度:",style =wx.ALIGN_CENTER)
Cbox3.Add(self.jindu,proportion = 0,flag =wx.TOP,border = 10)
Rbox.Add(Cbox3,flag = wx.BOTTOM|wx.ALIGN_RIGHT|wx.RIGHT,border = 60)
Cbox2 = wx.BoxSizer(wx.HORIZONTAL)
CJbutton = wx.Button(panel, label=u"采集", size=(55, 40))
Cbox2.Add(CJbutton,proportion = 0,flag =wx.TOP,border = 20)
QXbutton = wx.Button(panel, label="Close", size=(55, 40))
Cbox2.Add(QXbutton,proportion = 0,flag =wx.TOP,border = 20)
Rbox.Add(Cbox2,flag = wx.BOTTOM|wx.ALIGN_RIGHT|wx.RIGHT,border = 20)
#绑定事件
self.Bind(wx.EVT_BUTTON, self.onButton, CJbutton)
panel.SetSizer(Rbox)
self.Centre()
self.Show(True)
pub.subscribe(self.updateDisplay, "update")
def onButton(self,evt):
page = self.get_e(self.E1,self.E2)
startpage = page[0]
self.endpage = page[1]
num= 1
for i in range(num):
t = WorkerThread(queue,num,startpage,self.endpage,self)
t.setDaemon(True)
t.start()
for page in range(startpage,self.endpage):
m = str(page*10)
data = 'limit=10&start='+m
queue.put(data)
queue.join()
self.dhk()
app = wx.PySimpleApp()
frm = MyFrame()
frm.Show()
app.MainLoop()
论坛里面学习pyqt和tkinter的比较多,wxpython的比较少。
|
最佳答案
查看完整内容
论坛里面学习pyqt和tkinter的比较多,wxpython的比较少。
|