Python文档和/或缺少(例如键盘event.state)

时间:2015-09-06 17:22:48

标签: python events tkinter documentation keyboard-events

我在基于tkinter的程序中有一个功能,可以处理所有按键操作。我想在一个函数中处理所有按键操作。

我能找到测试是否有任何修饰符(AltCtrlstate)的唯一方法是测试事件对象g属性。但是,我无法找到任何描述此属性用法的文档以及可能含义的不同值。 The closest match I got不是很具描述性。

通过一些测试,我想出了下表。 (Shift键首先单独按下,然后按(AltCtrl## keysym Shift Alt Ctrl event.state state as binary (LSB is on the right) ## g 8 ....... ........ ........ ....1... ## G [] 9 ....... ........ ........ ....1..1 ## g [] 131080 ....... ......1. ........ ....1... ## g [] 12 ....... ........ ........ ....11.. ## G [] [] 131081 ....... ......1. ........ ....1..1 ## g [] [] 131084 ....... ......1. ........ ....11.. ## G [] [] 13 ....... ........ ........ ....11.1 ## G [] [] [] 131085 ....... ......1. ........ ....11.1 )的各种组合按下。)

Alt

这是在任何地方记录的,还是我们应该推断出这种信息?我只是试图了解Python文档的工作原理,这与Visual Studio / MSDN完全不同。

为什么event.state修饰符给出了这样一个奇数标志?

更新: 这是一个更完整的Mask | Modifier --------+--------------------- 0x0001 | Shift_L, Shift_R 0x0002 | Caps_Lock 0x0004 | Control_L, Control_R 0x0008 | Num_Lock 0x0100 | Mouse Button 1 0x0200 | Mouse Button 2 0x0400 | Mouse Button 3 0x20000 | Alt_L, Alt_R 面具清单,通过测试得出。

平台:Windows 7,64位,Python 3.4.3,USB键盘和USB鼠标。

{{1}}

1 个答案:

答案 0 :(得分:1)

tkinter是Tk的包装器。如果您对Tk有疑问,我知道的最佳来源是https://www.tcl.tk/doc/

如果你看http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/event-handlers.html我认为你会看到如何做你想做的事。至于记录的位置,我相信这篇文章的作者John Shipman通过使用一些自动化文档工具从tkinter源代码中获取了大量信息。他告诉我他是如何在一封电子邮件中做到的,但这是几年前的事了,我已经忘记了细节。

在我的Mac上(使用Logitech Windows键盘)我得到左右Alt的掩码为0x10,但Shift和Ctrl的值匹配。所以它似乎在某种程度上依赖于平台。当我按下箭头键,功能键或数字键盘键时,我也会获得非零掩码。