我正在运行一个我想在打开 MessageDialog 之前停止的 wxTimer,然后在 MessageDialog 关闭时重新启动。
我将如何做到这一点?我没有找到任何方法可以告诉我对话框是否已关闭。
目前,计时器基本上只是继续滴答作响,每次滴答声都会打开越来越多的窗口:(
希望您能够帮助我。谢谢!
我正在运行一个我想在打开 MessageDialog 之前停止的 wxTimer,然后在 MessageDialog 关闭时重新启动。
我将如何做到这一点?我没有找到任何方法可以告诉我对话框是否已关闭。
目前,计时器基本上只是继续滴答作响,每次滴答声都会打开越来越多的窗口:(
希望您能够帮助我。谢谢!
wxPython 并没有任何机制来确定 MessageDialog 是否打开。您可以做的是手动跟踪对话框是否打开。
如果您使用 打开 MessageDialog ShowModal
,则该ShowModal
调用将在对话框关闭时返回。您可以使用True
在调用之前ShowModal
和False
之后设置为的标志,即:
self.is_dialog_open = True
dialog.ShowModal()
self.is_dialog_open = False
然后你的 wx.Timer 调用的方法可以self.is_dialog_open
用来确定对话框是否打开。
根据应用程序的结构,您可能希望将此标志存储在其他对象中,而不是self
.
(我不保证此代码不容易出现竞争条件。如果您的计时器恰好在ShowModal()
返回之后检查对话框是否打开但之前self.is_dialog_open
设置回False
,那么您的计时器将认为该对话框已打开当它实际上刚刚关闭时。希望这对您来说不会是一个严重的问题。)