我正在尝试使用wxPython创建GUI。在我创建GUI之后,我希望代码继续执行,所以我试图将app.MainLoop()抛到一个新线程上。这给了我一些问题。此外,当我尝试更改背景颜色时,它会冻结GUI。
导入wx 导入线程 来自线程导入线程 来自多处理导入过程
类显示(wx.Frame):
def __init__(self, *args, **kwargs):
print 'here'
self.app = wx.App(False)
super(Display, self).__init__(*args, **kwargs)
self.SetTitle("Yo mama")
self.Show(True)
thread = Thread(target = self.app.MainLoop)
thread.start()
self.Close()
def DisplayGUI(self):
self.SetTitle("MyTitle")
self.Show(True)
def Changetitle(self):
self.SetTitle("Title2")
display =显示(无)
display.ChangeTitle()
所以基本上我希望能够运行一个GUI,并在我的程序中稍后控制它(而不是通过事件的GUI本身)。我计划随机播放图片。
感谢您的帮助。
-Braeden
答案 0 :(得分:0)
GUI的MainLoop
需要在主线程中运行。这样做,如果您想要随机时间的事件,您可以使用计时器,例如wx.Timer
。
使用这种方法,您提到的所有更改(显示图片,更改标题,颜色等)应该很简单。此外,您可以通过这种方式获得更多控制权,您可以在此处启动和停止计时器,更改间隔,拥有多个计时器,设置相互触发的计时器以及许多其他选项。
要了解有关wx.Timer的更多信息,一个好的起点始终是演示。还有一个教程here和一个视频here。
(我听说有办法运行MainLoop in a separate thread,但你没有提到要求,而且使用计时器会更容易。)