Ruby gtk2 アプリで長いジョブ処理を開始するボタンを使用していますが、ユーザーが誤って 2 回実行できないように、処理中にボタンを無効にしたいと考えています。設定button.sensitive = false
でうまくいくと思い、次のコードでテストしました。
button.signal_connect(:clicked) do
button.sensitive = false
puts "clicked"
sleep 5
button.sensitive = true
end
ジョブが開始された後にボタンをクリックすると、:clicked
イベントがスタックに置かれるように見えるので、ボタンを 2 回クリックするsleep
と、コンソール ウィンドウに「クリックされました」が 3 回表示されます。
これがどのように機能するかを誤解していますか?期待どおりに動作しない場合、ジョブが終了したらイベント スタックをクリアする方法はありますか?