Вы можете использовать wx.CallAfter для запуска вызова, когда событие wx l oop «имеет свободное время», или wx.CallLater для запуска чего-либо через некоторое время.
wx.CallAfter(self.onStart)
I не знаю, если Win32_Process занимает много времени, если это так, он, безусловно, заблокирует пользовательский интерфейс. Лучше всего начать новый поток для выполнения вычислений (Win32_Process), а затем, например, wx.CallAfter, чтобы обновить пользовательский интерфейс. Помните, что вы не можете обновлять пользовательский интерфейс из других потоков.
Когда ваш поток вычисляет значение, вы можете, например,
def thread_run_function(self):
# perform the calculation...
wx.CallAfter(self.update_ui, calculated_value)
def update_ui(self, calculated_value):
self.some_widget.SetLabel("Value: %s" % calculated_value)
Или:
def thread_run_function(self):
# perform the calculation...
self.calculated_value = calculated_value
wx.CallAfter(self.update_ui)
def update_ui(self):
self.some_widget.SetLabel("Value: %s" % self.calculated_value)