0

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

我将如何做到这一点?我没有找到任何方法可以告诉我对话框是否已关闭。

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

希望您能够帮助我。谢谢!

4

1 回答 1

0

wxPython 并没有任何机制来确定 MessageDialog 是否打开。您可以做的是手动跟踪对话框是否打开。

如果您使用 打开 MessageDialog ShowModal,则该ShowModal调用将在对话框关闭时返回。您可以使用True在调用之前ShowModalFalse之后设置为的标志,即:

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,那么您的计时器将认为该对话框已打开当它实际上刚刚关闭时。希望这对您来说不会是一个严重的问题。)

于 2013-03-24T09:44:57.453 回答