屏幕加载wxpython后的启动方法

问题描述 投票:0回答:1

我已经熟悉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的事件。如何以适当的方式做到这一点?

谢谢!

python wxpython
1个回答
0
投票

[您可以使用wx.CallAfter在wx事件循环“有空闲时间”时运行可调用对象,或者使用wx.CallLater在一段时间后运行某些对象。

wx.CallAfter(self.onStart)

我不知道Win32_Process是否花费很长时间,如果这样会肯定会阻塞UI。最好的办法是启动一个新线程来执行计算(Win32_Process),然后例如执行wx.CallAfter来更新UI。请记住,您可能无法从其他线程更新UI。

© www.soinside.com 2019 - 2024. All rights reserved.