假设我有这个菜单:
menubar = TkMenu.new(win)
win['menu'] = menubar
edit = TkMenu.new(menubar)
menubar.add :cascade, :menu => edit, :label => 'Edit'
edit.add(:command, :label => 'Delete')
当变量也发生变化时,我想更改“编辑”条目状态。
我试过这个,
def update_menu(edit)
Thread.new {
loop {
if $variable == nil
edit.entryconfigure 'Delete', :state => "disabled"
else
edit.entryconfigure 'Delete', :state => "normal"
end
sleep 0.1
}
}
end
它确实有效,但 tk 菜单会在循环的每个滴答声中闪烁。
我搞砸了,或者 TK 中的循环有更好的方法吗?好像是个bug...
我在 Windows 10 上,这是我的 ruby 版本:
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]