我正在运行一个wxTimer,我想在打开MessageDialog之前停止,并在MessageDialog关闭时重新启动。
我将如何实现这一目标? 我没有找到任何方法可以告诉我对话框是否已经关闭。
目前,计时器基本上只是继续滴答作响,每次打勾时都会打开越来越多的窗口:(
希望你能帮助我。 谢谢!答案 0 :(得分:0)
wxPython实际上没有任何机制来确定MessageDialog是否已打开。你可以做的是手动跟踪对话框是否打开。
如果使用ShowModal
打开MessageDialog,则对话框关闭时将返回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
,然后你的计时器会认为对话框在它刚刚关闭时是打开的。希望这对你来说不是一个严重的问题。)