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.
总结以上是内存溢出为你收集整理的线程,wxpython和状态栏全部内容,希望文章能够帮你解决线程,wxpython和状态栏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)