3

我是一个在 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 中,在按下按钮 5 秒延迟后,我一次(同时)得到1st instance两者2nd instance

我真的很困惑。谁能给我一些解决方案。

提前致谢。

4

1 回答 1

1

这应该使用wx.Timer.

假设您的主要目标是在 5 秒后更新 GUI,将第二个AppendText放入函数中并将其设置为使用 wx.Timer 调用。这样,您的 GUI 在 5 秒延迟期间仍会响应。

将调用放在time.sleep()GUI 中的事件处理程序中,因此放在主线程中,会让您头疼不已。

另一方面,如果您真的希望您的 GUI 在 5 秒内没有响应,您应该明确地执行此操作,例如使用Enable(False)Window,然后再次Enable(True)在 5 秒结束时使用计时器调用。这样,将向用户指示 GUI 处于非活动状态。

于 2012-12-12T05:41:52.210 回答