Выбор Ruby TK Combobox не исчезнет - PullRequest
0 голосов
/ 05 июля 2018

Это мой код:

combobox = Tk::Tile::Combobox.new (root) {
  values ["Folders","Files"]
  state "readonly"
  grid "row" => 1, "column" => 0, "sticky" => "w"
}

После того, как я выберу одно из значений, я хочу, чтобы выделение синего цвета исчезло.

enter image description here

Итак, я попытался использовать это combobox.selection_clear, но оно не сработало вообще. Если я установлю виджет на «нормальный» вместо «только для чтения», то это будет работать. Но в нормальном состоянии содержимое комбинированного списка может быть изменено пользователем, и я хочу избежать этого, удалив выделение синего цвета тоже.

Я также пытался TkSelection.clear(combobox), но это тоже не сработало.

Это моя рубиновая версия:

ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32] 

1 Ответ

0 голосов
/ 06 июля 2018

Я не знаю, сработают ли эти методы из-за ошибки, но я нашел решение ..

Я сделал привязку к виртуальному событию:

combobox.bind("<ComboboxSelected>") {combobox.selection_clear}

Но это не удалит синюю подсветку, как сказано в вопросе выше.

Вместо этого, если я уберу фокус из выпадающего списка и установлю его на рамку или другой виджет, как это,

combobox.bind("<ComboboxSelected>") {combobox.selection_clear; frame.focus} 

Таким образом, синяя часть исчезнет .. Изображение выше теперь выглядит так:

enter image description here

Изменение фокуса с помощью frame.focus сделало трюк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...