wxPython MessageDialog - Как запросить статус?
Я использую wxTimer, который я хотел бы остановить перед открытием MessageDialog и перезапустить, когда MessageDialog будет закрыт.
Как бы я это сделал? Я не нашел никакого метода, который сказал бы мне, был ли диалог закрыт или нет.
В настоящее время таймер в основном просто тикает, и все больше и больше окон открываются при каждом тике:(
Надеюсь, ты сможешь мне помочь. Спасибо!
1 ответ
У 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
, тогда ваш таймер будет думать, что диалог открыт, когда он на самом деле был только что закрыт. Надеюсь, это не будет серьезной проблемой для вас.)