wxPython MessageDialog - 如何查询状态?

时间:2013-03-23 22:10:57

标签: python wxpython status wxwidgets messagedialog

我正在运行一个wxTimer,我想在打开MessageDialog之前停止,并在MessageDialog关闭时重新启动。

我将如何实现这一目标? 我没有找到任何方法可以告诉我对话框是否已经关闭。

目前,计时器基本上只是继续滴答作响,每次打勾时都会打开越来越多的窗口:(

希望你能帮助我。 谢谢!

1 个答案:

答案 0 :(得分:0)

wxPython实际上没有任何机制来确定MessageDialog是否已打开。你可以做的是手动跟踪对话框是否打开。

如果使用ShowModal打开MessageDialog,则对话框关闭时将返回ShowModal调用。您可以在之后调用TrueShowModal之前使用设置为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,然后你的计时器会认为对话框在它刚刚关闭时是打开的。希望这对你来说不是一个严重的问题。)