1

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 回表示されます。

これがどのように機能するかを誤解していますか?期待どおりに動作しない場合、ジョブが終了したらイベント スタックをクリアする方法はありますか?

4

1 に答える 1