将计数器从 python 线程传递到 wxpython gage



我正在尝试将计数器从python COM线程传递回wxpython选项卡面板。 任何人都有一个可行的解决方案。 我的一些代码如下:

这个类与我的wxPython代码是分开的,但被调用并将数据发送到这个线程。

class Log_COM_thread(Thread): ............ def run(self):
.............
int_log_cnt = int_log_cnt + 1
int_log.TabPanel.gauge.SetValue(int_log_cnt)
if int_log_cnt == 64:
int_log.TabPanel.Int_Log_Status.SetLabel('Extraction Complete')

此计数器值被发送到的单独模块int_log被调用如下:

class TabPanel(wx.Panel):
def __init__(self, parent):
self.gauge = wx.Gauge(self, range=72, size=(250, 25))
.....and then more wxpython code.

我遇到的错误是:

Exception in thread Thread-8:
Traceback (most recent call last):
File "F:Python27libthreading.py", line 551, in __bootstrap_inner self.run()
File "F:Documents and SettingsswhiteDesktopOG GUI Working Jan 13nbm.py", line 267, in run
int_log.TabPanel.gauge.SetValue(int_log_cnt)
AttributeError: type object 'TabPanel' has no attribute 'gauge'

我将如何将我的计数器从我的外部线程发送回 wxpython 中的该仪表。 任何关于如何做到这一点的帮助都将非常有帮助。

不能直接从单独的线程调用 wx 方法。您需要使用 wxPython 线程安全方法之一与主 GUI 线程进行通信。他们是wx。CallAfter, wx.CallLater和wx。事后。

在wxPython wiki上有很多关于threads和wx的信息。我还写了一个关于这个主题的教程,可能会对你有所帮助。

相关内容

  • 没有找到相关文章

最新更新