1
我在我的ruby gtk2应用程序中使用了一个按钮,它启动了一个长时间的作业处理,我想在处理时禁用该按钮,以便用户不会意外地运行它两次。我想设置button.sensitive = false
会做的工作,用下面的代码进行了测试:Ruby gtk2:button.sensitive = false - 事件仍然排队
button.signal_connect(:clicked) do
button.sensitive = false
puts "clicked"
sleep 5
button.sensitive = true
end
点击按钮上的工作开始后,似乎仍然把:clicked
事件堆栈上,所以如果我按一下按钮时的两倍多sleep
,'clicked'在控制台窗口中显示三次,当我预料它只会出现一次。
我误解了这是如何工作的?如果它不能按我期望的方式工作,那么在作业完成后是否有办法清除事件堆栈?
没有信号处理程序返回到主循环成为设置有效吗?只是猜测,到目前为止还没有用过Gtk2。 – Torimus