Tkinter 绑定“<Control-Key-n>”与“<Control-n>”

Tkinter Binding "<Control-Key-n>" vs. "<Control-n>"

我有一个问题:

在tkinter中绑定一个函数,有很多种方法。其中两种方式是:

# Method 1
root.bind('<Control-n>', ExampleFunction)

# Method 2
root.bind('<Control-Key-n>', ExampleFunction)

Control-n 和 Control-Key-n 有什么区别?

功能上没有区别。

Control-Key-n 是由

组成的事件说明符
  1. 修饰符Control(事件发生时按住control键。)
  2. 事件类型KeyKeyPress的缩写)
  3. 事件详细信息 n(具体来说,按下了 n 键)。

来自man n bind

If a keysym detail is given, then the type field may be omitted; it will default to KeyPress. For example, <Control-comma> is equivalent to <Control-KeyPress-comma>.

所以<Control-n>只是<Control-Key-n>的缩写形式(它本身就是<Control-KeyPress-n>的缩写形式):单独的n相当于Key-n.