在两个 Tkinter 小部件之间拆分键盘输入
Split keyboard entry between two Tkinter widgets
我有一个 window,带有树视图和条目小部件。我希望能够在条目小部件中写入,同时仍然能够使用 up/down 箭头导航树视图。我尝试过几种方法:
- 将所有键盘事件发送到两个小部件(我尝试使用自定义 bind_tags,但未成功)
- 使用条目
<Up>
和 <Down>
绑定来导航树视图(我还没有找到一种直接的方法来上下移动具有多个父子的树,例如文件目录)
- 使用根
<Key>
绑定有选择地将原始键码发送到入口小部件,这样退格键和 left/right 箭头之类的东西就会按预期工作(我还没有遇到发送 keycodes/events 直接进入条目小部件)
您的#2 是正确的方法。您将必须编写计算如何在树上上下移动的方法。可以获取当前选中的项,然后使用.next()
方法获取同一父项的下一个子项。如果 returns 是一个空字符串,您可以获得父级(通过调用 .parent()
)并对其调用 .next()
。您可以递归地继续这样做,直到到达树的末尾(父节点是根节点,.next()
returns 是空字符串)。
我有一个 window,带有树视图和条目小部件。我希望能够在条目小部件中写入,同时仍然能够使用 up/down 箭头导航树视图。我尝试过几种方法:
- 将所有键盘事件发送到两个小部件(我尝试使用自定义 bind_tags,但未成功)
- 使用条目
<Up>
和<Down>
绑定来导航树视图(我还没有找到一种直接的方法来上下移动具有多个父子的树,例如文件目录) - 使用根
<Key>
绑定有选择地将原始键码发送到入口小部件,这样退格键和 left/right 箭头之类的东西就会按预期工作(我还没有遇到发送 keycodes/events 直接进入条目小部件)
您的#2 是正确的方法。您将必须编写计算如何在树上上下移动的方法。可以获取当前选中的项,然后使用.next()
方法获取同一父项的下一个子项。如果 returns 是一个空字符串,您可以获得父级(通过调用 .parent()
)并对其调用 .next()
。您可以递归地继续这样做,直到到达树的末尾(父节点是根节点,.next()
returns 是空字符串)。