Я откинул свою проблему до примера кода, показанного в этом сообщении. Обратите внимание, что я не вызываю app.MainLoop(), потому что это не интерактивное окно; Я хочу, чтобы он всплывал в начале, показывал некоторые индикаторы выполнения, когда происходит работа, и исчезает, когда завершается.wxPython - Как заставить UI обновить?
Мое (ограниченное) понимание wxPython и wx.Yield() привело меня к мысли, что вызов wx.Yield() после того, как некоторые работы пользовательского интерфейса сбросят эти изменения на дисплей. Это не происходит - когда я запускаю этот скрипт, есть серый ящик, где должен быть «Hello World».
Что я делаю неправильно?
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, size=(400,400))
self.panel = wx.Panel(self, -1)
wx.StaticText(self.panel, -1, "Hello World", (20,20))
wx.Yield()
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None, -1)
self.frame.Show(True)
self.SetTopWindow(self.frame)
return True
def run():
app = MyApp(redirect=False)
import time; time.sleep(5)
run()
Я просто попробовал это; получил тот же результат, что и выше. – Doug
Хммм угадайте свое право ... Я не знаю, что вам, возможно, придется добавить MainLoop, и вы можете просто показать модально, а затем закрыть или что-нибудь убить wx.App ... не уверен, действительно –