擅长:python、mysql、java
<p>mikedriscoll的回答描述了最常用的方法。他在自己的网站上有一篇非常好的文章,详细介绍了<a href="http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/" rel="nofollow">here</a>。他那里有很多很好的文章,看看吧。在</p>
<p>另一种方法是在主线程中设置一个计时器,用于检查队列中的消息。在<strong>init</strong>方法中设置队列,并将其传递给运行长时间运行函数的工作线程。worker根据需要将内容放入队列,与timer事件相关联的函数将在主线程中拾取消息/数据并更新GUI等。下面是一个简短的示例:</p>
<pre><code>#first 4 lines are the bottom of the __init__ method of the main frame
self.timer = wx.Timer(self)
self.timer.Start(250)
self.Bind(wx.EVT_TIMER, self.onTimer, self.timer)
self.Bind(wx.EVT_CLOSE, self.onClose)
def onTimer(self, event):
'''checks for messages in self.q2 (Queue.Queue set up above)'''
while not self.q2.empty():
msg, data = self.q2.get()
self.update(None, msg, data)
def update(self, event, msg, data):
'''Runs with data returned in self.q2'''
self.sb.SetStatusText(msg)
etc, etc . . .
</code></pre>
<p>祝你好运,迈克</p>