我已经熟悉python / wxpython。我为面板/网格创建了一个类。但是我想“绘制”网格,只有在全部加载/显示之后,我才想开始运行一种方法/函数来计算Windows中正在运行的进程。代码段:
self.sb.SetStatusText('Initialising application...')
self.SetTitle('Computer Check v0.1')
self.Centre()
self.Show()
self.onStart()
def onStart(self):
self.sb.SetStatusText('Counting processes')
count = 0
for process in c.Win32_Process():
count +=1
self.sb.SetStatusText('Found '+str(count)+' running processes')
但是看起来事情正在互相追赶,这意味着应用程序正在绘制并且“ onstart()”已经在运行...
另一件事是应用程序在onstart()期间“挂起”,使用WMI似乎很繁重...或者代码只是从我这边丢掉了;-)
在加载应用程序后找不到用于启动onstart的事件。如何以适当的方式做到这一点?
谢谢!
[您可以使用wx.CallAfter在wx事件循环“有空闲时间”时运行可调用对象,或者使用wx.CallLater在一段时间后运行某些对象。
wx.CallAfter(self.onStart)
我不知道Win32_Process是否花费很长时间,如果这样会肯定会阻塞UI。最好的办法是启动一个新线程来执行计算(Win32_Process),然后例如执行wx.CallAfter来更新UI。请记住,您可能无法从其他线程更新UI。