【发布时间】:2016-09-21 01:01:12
【问题描述】:
我在使用 IDLE 执行任务时第一次注意到这一点,但它也出现在我自己的 tkinter 程序中。许多键盘上有两组箭头键,通常位于空格键行旁边的常规箭头键和键盘上的箭头键,当打开数字锁定时,它们兼作数字输入键。在 tkinter 中,这两个集合在按下时会产生不同的事件名称。
我的问题是,当使用各种内置的 tkinter 小部件(例如 Text 和 Entry)时,默认的 tkinter 行为似乎是忽略键盘事件。我想让我的程序对这两个集合一视同仁。
我希望有一个相对简单的方法来实现这一点,例如在我导入模块后在模块中设置一个变量,或者将 KP_* 事件绑定到函数,然后将相应的常规箭头键事件发送回我的小部件.然而,我发现唯一承认存在这个怪癖的只有 this 其他未回答的 Stack Overflow 问题。
【问题讨论】:
-
10 键向上箭头类似于“KP_Up”,当按下一个键时,对于 event.keysym,正常的向上箭头只是“向上”。希望这足以让您找到一个好的答案。键符和键码列表位于 p65 和 66(法语)ateliers.mse.free.fr/tkinter/tkinter-ref5.pdf
-
因此您可以将多个键事件绑定到一个条目,例如,转到同一个函数。您还可以捕获任何关键事件并过滤您希望程序响应的事件。一个简单的例子会有所帮助。如果您希望 10 键向上箭头在文本中向上移动一行,您可能必须自己编程,即将光标向上移动一行。
-
谢谢,我知道 KP_arrow 与箭头事件名称。我已经考虑过自己对小部件状态的更改进行编程,尽管这会导致另一个问题(在询问之前我需要研究)关于如何访问小部件的内部状态。