Давайте предположим, что у меня есть это меню:
menubar = TkMenu.new(win)
win['menu'] = menubar
edit = TkMenu.new(menubar)
menubar.add :cascade, :menu => edit, :label => 'Edit'
edit.add(:command, :label => 'Delete')
И я хочу изменить состояние ввода "edit", когда переменная тоже меняется.
Я пробовал это,
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?Это похоже на ошибку ...
Я на Windows 10, и это моя версия ruby:
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]