1

ポップアップ情報メッセージに を使用していtk_messageBoxます。ok-cancel特定のボタンを押すとメッセージが表示されますがRun、クリックした後、okまたはcancelポップアップ情報メッセージ内でRunボタンが押されたままになります (添付の画像に示されているように)。このように押されていない通常の状態に戻りたいですか?

押されたボタン

4

1 に答える 1

1

問題は、ボタンの外観を更新するために必要な UI の更新を処理せずに、フォアグラウンドでタスクを実行していることです。UI を内部状態と同期させるには、実行ボタンを無効 ( -state disabled)に設定し、updateその後すぐに実行する必要があります (一度に複数のクリック処理が行われないように、ボタンの状態を無効に設定します)。 . 次に、タスクが終了したら、状態を通常に戻します。

それほど複雑ではありませんが、おそらく次のようなヘルパー プロシージャがあれば、はるかに簡単です。

proc doProcessing {} {
    .runButton configure -state disabled
    update
    doTheLongProcessing
    .runButton configure -state normal
}

button .runButton -text Run -command {
    if {[tk_messageBox -type okcancel -message "is it ok?"] eq "ok"} {
        doProcessing
    }
}
pack .runButton
于 2016-03-02T09:58:48.130 に答える