0

MessageDialogを開く前に停止し、MessageDialogが閉じられたときに再起動したいwxTimerを実行しています。

どうすればそれを達成できますか?ダイアログが閉じられたかどうかを教えてくれるメソッドが見つかりませんでした。

現時点では、タイマーは基本的にカチカチ音をたて続けており、ティックごとにますます多くのウィンドウが開かれています:(

あなたが私を助けてくれることを願っています。ありがとう!

4

1 に答える 1

0

wxPython には、MessageDialog が開いているかどうかを判断するメカニズムがありません。代わりにできることは、ダイアログが開いているかどうかを手動で追跡することです。

を使用して MessageDialog を開くと、ダイアログが閉じられたときに呼び出しが返されますShowModal。への呼び出しの前後にShowModal設定されるフラグを使用できます。つまり、次のようなものです。TrueShowModalFalse

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 に答える