我在我的 ruby gtk2 应用程序上使用了一个按钮,它启动了一个较长的作业处理,我想在处理时禁用该按钮,这样用户就不会意外地运行它两次。我认为设置button.sensitive = false
可以完成这项工作并使用以下代码对其进行测试:
button.signal_connect(:clicked) do
button.sensitive = false
puts "clicked"
sleep 5
button.sensitive = true
end
在作业开始后单击按钮似乎仍然会将:clicked
事件放在堆栈上,因此如果我在 期间再单击按钮两次sleep
,则“单击”会在控制台窗口中显示三次,而我预计它只会出现一次。
我是否误解了这是如何工作的?如果它不能按我预期的方式工作,有没有办法在工作完成后清除事件堆栈?