wx(およびwxPython)には、PyQtで見逃している2つのイベントがあります。
EVT_IDLE
それはフレームに送信されています。アプリケーションの状態に応じて、さまざまなウィジェットを更新するために使用できますEVT_UPDATE_UI
ウィジェットを再描画して更新する必要があるときにウィジェットに送信されるので、ハンドラーでその状態を計算できます
さて、PyQtにはこれらがないようで、PyQtの本はupdateUi
メソッドを書いてそれを手動で呼び出すことを提案しています。GUIを更新する可能性のあるメソッドからの多くの手動呼び出しを回避するために、タイマーから0.1秒に1回呼び出すことになりました。私は何かが足りないのですか?これを達成するためのより良い方法はありますか?
例:いくつかの処理を開始するスタートボタンを備えたシンプルなアプリがあります。スタートボタンは、メニューを使用してファイルを開いた場合にのみ有効にする必要があります。さらに、ステータスバーには情報を表示する永続的なウィジェットがあります。
私のアプリケーションには次の状態があります。
- ファイルを開く前(この状態では、ステータスバーに何か特別なものが表示され、スタートボタンが無効になっています)
- ファイルが開かれ、処理が開始されませんでした:スタートボタンが有効になり、ステータスバーに何か他のものが表示されます
- 処理が実行中です。スタートボタンに「停止」と表示され、ステータスバーに進行状況が報告されます。
Wxでは、ボタンのUI更新イベントでその状態を処理します。つまり、アプリケーションの状態に応じて、ボタンのテキストと、ボタンが有効になっているかどうかを処理します。ステータスバーについても同じです(または、EVT_IDLEを使用します)。
Qtでは、状態に影響を与える可能性のあるいくつかのメソッドでボタンを更新するか、update_uiメソッドを作成してタイマーで定期的に呼び出す必要があります。より「QT」っぽい方法は何ですか?