我是一名在wxPython / Python中开发应用程序的新程序员。我从按钮事件得到不一致的结果如下。
def OnButton1Button(self, event):
self.textCtrl9.AppendText(" 1st instance\n")
time.sleep(5)
self.textCtrl9.AppendText(" 2nd instance\n")
应该打印1st instance
,然后在5秒后再次打印2nd instance
。这在Windows操作系统中运行良好,但在Linux中,我得到了1st instance
&按下按钮5秒后,一次{同时} 2nd instance
。
我真的很困惑。有人可以建议我一些解决方案。
提前致谢。
答案 0 :(得分:1)
这应该使用 wx.Timer
。
假设您的主要目标是在5秒后更新GUI,请将第二个AppendText
放入函数中,并将其设置为使用wx.Timer调用。这样,您的GUI在5秒延迟期间仍然会响应。
在GUI中的事件处理程序中调用time.sleep()
,因此在主线程中,将使您无法头疼。
另一方面,如果你真的希望你的GUI在5秒内没有响应,你应该明确地这样做,比如在窗口中使用Enable(False)
,再次使用一个Enable(True)
来调用5秒钟后计时器。这样,将向用户指示GUI处于非活动状态。