MessageDialogを開く前に停止し、MessageDialogが閉じられたときに再起動したいwxTimerを実行しています。
どうすればそれを達成できますか?ダイアログが閉じられたかどうかを教えてくれるメソッドが見つかりませんでした。
現時点では、タイマーは基本的にカチカチ音をたて続けており、ティックごとにますます多くのウィンドウが開かれています:(
あなたが私を助けてくれることを願っています。ありがとう!
MessageDialogを開く前に停止し、MessageDialogが閉じられたときに再起動したいwxTimerを実行しています。
どうすればそれを達成できますか?ダイアログが閉じられたかどうかを教えてくれるメソッドが見つかりませんでした。
現時点では、タイマーは基本的にカチカチ音をたて続けており、ティックごとにますます多くのウィンドウが開かれています:(
あなたが私を助けてくれることを願っています。ありがとう!
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
場合、タイマーはダイアログが開いていると判断します。実際には閉鎖されたばかりです.これがあなたにとって深刻な問題にならないことを願っています.)