我把我的問題歸結爲這篇文章中顯示的示例代碼。請注意,我沒有調用app.MainLoop(),因爲這不是一個交互式窗口;我希望它在開始時彈出,在工作發生時顯示一些進度條,並在完成時消失。wxPython - 如何強制UI刷新?
我對wxPython和wx.Yield()的理解讓我相信,在某些UI工作之後調用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,你可以只顯示模式,然後onclose或任何殺死wx.App ...不知道真的 –