<p>在
也可以将调用类传递给线程,如下所示:</p>
<pre class="lang-py prettyprint-override"><code>class WorkerThread(threading.Thread):
def __init__(self, parent):
super(WorkerThread, self).__init__()
self.parent = parent
def run(self):
for i in range(10):
wx.CallAfter(self.parent.startStop)
class VolumePanel(object):
def startStop(self):
print "in def startStop()"
</code></pre>
<p>注意,我们使用<code>wx.CallAfter()</code>,而不是直接调用函数。这是因为如果我们直接调用它,它实际上是从线程调用的,而不是<code>MainThread</code>。这有时会成为一个问题,这取决于你在做什么。在</p>
<p>如果我们打印出当前线程(带<code>threading.current_thread()</code>)而没有<code>wx.CallAfter</code>,我们得到</p>
^{pr2}$
<p>但是,使用<code>wx.CallAfter</code>,我们得到</p>
<pre class="lang-py prettyprint-override"><code><_MainThread(MainThread, started 6604)>
<_MainThread(MainThread, started 6604)>
<_MainThread(MainThread, started 6604)>
<_MainThread(MainThread, started 6604)>
<_MainThread(MainThread, started 6604)>
<_MainThread(MainThread, started 6604)>
<_MainThread(MainThread, started 6604)>
<_MainThread(MainThread, started 6604)>
<_MainThread(MainThread, started 6604)>
<_MainThread(MainThread, started 6604)>
</code></pre>