所有Tkinter事件列表

85
在Python的tkinter模块中,<Button-1><Button-2><Button-3>分别用于识别鼠标左键、中键和右键单击。
同样地,<KeyPress-Return>用于回车键按下。
我应该在哪里找到全部这些事件的列表,包括不同键盘按键的名称? Tcl绑定手册中没有这些信息。
4个回答

130

您可以在effbot.org或者新墨西哥科技提供的文档中找到Bindings和Events的通用列表,同时还可以在这里查看一些按键名称以及原始文档

以下是一些常见事件的摘要,其中解释了一些按键名称:

事件 描述
<Button-1>

按钮1是最左边的按钮,按钮2是中间的按钮(如果有的话),按钮3是最右边的按钮。

<Button-1><ButtonPress-1><1>都是同义词。

在Linux下支持鼠标滚轮,请使用Button-4(向上滚动)和Button-5(向下滚动)

<B1-Motion> 移动鼠标并按住鼠标按钮1(对于中间按钮使用B2,对于右键使用B3)。
<ButtonRelease-1>按钮1已释放。在大多数情况下,这可能比Button事件更好,因为如果用户意外按下按钮,则可以将鼠标移开小部件以避免触发事件。
<Double-Button-1> 双击了按钮1。您可以使用Double或Triple作为前缀。
<Enter> 鼠标指针进入了小部件(此事件并不意味着用户按下了Enter键!)。
<Leave> 鼠标指针离开了小部件。
<FocusIn> 键盘焦点移到此小部件或此小部件的子级。
<FocusOut> 键盘焦点从此窗口部件移动到另一个窗口部件。
<Return> 用户按下Enter键。对于普通的102键PC样式键盘,特殊键包括Cancel(Break键),BackSpace,Tab,Return(Enter键),Shift_L(任何Shift键),Control_L(任何控制键),Alt_L(任何Alt键), Pause,Caps_Lock,Escape,Prior(Page Up),Next(Page Down),End,Home,Left,Up,Right,Down,Print,Insert,Delete,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,Num_Lock和Scroll_Lock。
<Key> 用户按下任意键。该键在传递给回调函数的事件对象的char成员中提供(对于特殊键是一个空字符串)。
a用户滚动了鼠标滚轮。
<Button-1> 用户按下鼠标左键。数字 "1" 是键盘绑定,而 <1> 是按钮绑定。
<Shift-Up> 用户按住 Shift 键并按向上箭头键。您可以使用类似 Alt、Shift 和 Control 的前缀。
<Configure> 小部件的大小或位置已更改(在某些平台上)。新的大小以事件对象的宽度和高度属性提供给回调函数。
<Activate> 小部件从非活动状态变为活动状态。这是指像按钮这样的小部件的状态选项发生更改,从非活动状态(灰色)变为活动状态。
<Deactivate> 小部件从活动状态变为非活动状态。这是指像单选按钮这样的小部件的状态选项发生更改,从活动状态变为非活动状态(灰色)。
<Destroy> 小部件正在被销毁。
<Expose> 每当应用程序或小部件的一部分在被其他窗口覆盖后变得可见时,都会发生此事件。
<KeyRelease> 用户松开了一个键。
<Map> 小部件正在被映射,即在应用程序中可见。例如,当您调用小部件的.grid()方法时,就会发生这种情况。
<Motion> 用户在小部件内完全移动了鼠标指针。
<MouseWheel>用户向上或向下滚动鼠标滚轮。目前,此绑定在Windows和MacOS上有效,但在Linux下无效。
<Unmap> 小部件被取消映射并不再可见。
<Visibility> 当应用程序窗口的至少一部分在屏幕上可见时发生。

2
并非所有的键符都列在那里。底层的东西总是能够产生我们从未听说过的键符。有时候,你最终只能尝试一下看看。 - Donal Fellows
2
最新的tcl8.7文档:https://tcl.tk/man/tcl8.7/TkCmd/keysyms.html - moogoo
1
@moogoo,请注意,截至今天,Tcl/Tk 8.7仍处于alpha开发阶段(https://tcl.tk/software/tcltk/8.7.html),因此不太可能像Tcl/Tk 8.6一样嵌入Python。有关Tcl/Tk 8.6文档的链接,请参见此答案(https://dev59.com/bFwY5IYBdhLWcg3wuZym#72087813)。 - Olivier
大多数事件与一个名字非常相似的XEvent对应。 - Donal Fellows
此外,如果您正在进行文本输入,请注意输入法和辅助技术会产生没有对应键符但带有非空文本的“键”事件。默认的小部件类绑定应该为您处理这个问题(除了画布)。 - Donal Fellows

7

请查看模块tkinter/__init__.pyclass EventType的定义。

通常,如果出现异常,该模块会在我的Wing IDE中显示为一个选项卡。


8
请详细阐述您的回答,例如,您可以提供一个例子来说明这些工具如何帮助解决问题,或者至少提供进一步的文档链接。 - Richard-Degenne

3

所有被当前tkinter(在我写这篇文章时捆绑了Tcl/Tk 8.6线程)所识别的符号的全面列表可以在这里找到。


1

在Github上有一个小的Tkinter帮助工具,您可以使用它来分析任何事件,包括事件.keysym_num和事件状态作为位掩码的数据!

KEYSYM_NUM: 65 | STATE MASK: 2 == 0x2 == 0b10

也许它能帮助您解决问题。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接