tk2combobox:如何控制对上/下箭头键的响应

时间:2018-08-17 15:47:17

标签: r tk

我已经使用tk2combobox在R中创建了一个UI。

如果控件具有焦点,而我按下了“向下箭头”键,则它将扩展列表,而不是更改选择。 直到我向下箭头并单击“ enter”或用鼠标单击时,它才真正改变选择。

有什么办法可以使我立即使用箭头键更改选择?

1 个答案:

答案 0 :(得分:0)

这是您在Tcl中的操作方式。我无法获得第一 按键工作,因为绑定中的交互以某种方式引起了 第二次按键消失。

package require Tk

proc ::lbarrowhandler { w } {
  set currselidx [$w curselection]
  regsub {\.popdown\.f\.l$} $w {} cb
  $cb current $currselidx
  return -code ok
}

set ::x cc
ttk::combobox .c -values {aa bb cc dd ee ff} -textvariable ::x
pack .c

bind ComboboxListbox <<ListboxSelect>> +[list ::lbarrowhandler %W]

编辑:

另一种可能性是将ttk :: spinbox与-values选项一起使用。 我不知道您的确切用例,但这会给用户带来有限的 值的选择。这里的缺点是完整列表 不可见。

set ::x cc
ttk::spinbox .sp -values {aa bb cc dd ee ff} -state readonly \
     -wrap true -textvariable ::x
pack .sp

-state只读阻止用户输入任何内容,并且 -wrap选项将使箭头控件从头到尾换行, 反之亦然。

参考:http://www.tcl-lang.org/man/tcl/TkCmd/ttk_spinbox.htm