线程,wxpython和状态栏
发布时间:2020-12-20 13:21:56 所属栏目:Python 来源:网络整理
导读:我正在做一个我正在使用wxStatusBar的程序,当下载开始时我开始这样的子线程: def OnDownload(self,event): child = threading.Thread(target=self.Download) child.setDaemon(True) child.start() 下载是另一个没有参数的功能(自我除外).我想从那里更新我的
我正在做一个我正在使用wxStatusBar的程序,当下载开始时我开始这样的子线程:
def OnDownload(self,event): child = threading.Thread(target=self.Download) child.setDaemon(True) child.start() 下载是另一个没有参数的功能(自我除外).我想从那里更新我的状态栏,其中包含有关下载进度的一些信息,但是当我尝试这样做时,我经常会遇到Xwindow,glib和segfaults错误.有什么想法解决这个问题? 解决:我只需要在更改线程内部GUI中的内容和wx.MutexGuiLeave()完成之前包含wx.MutexGuiEnter().例如 def Download(self): #stuff that doesn't affect the GUI wx.MutexGuiEnter() self.SetStatusText("This is a thread") wx.MutexGuiLeave() 这就是全部:D 解决方法
你是如何更新状态栏的?
我认为你应该没问题,如果你创建一个自定义事件,然后通过wx.PostEvent发布它来通知GUI线程中的框架/状态栏. 对于状态栏中的下载进度,您可能希望事件看起来像这样: DownloadProgressEvent,EVT_DL_PROGRESS = wx.lib.newevent.NewEvent() # from the thread... event = DownloadProgressEvent(current=100,total=1000,filename="foo.jpg") wx.PostEvent(frame,event) # from the frame: def OnDownloadProgress(self,event): self.statusbar.update_dl_msg(event.current,event.total,event.filename) Here’s some more detail from the wxPython wiki. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |