【问题标题】:Key Event Handling using Tkinter in Python在 Python 中使用 Tkinter 进行关键事件处理
【发布时间】:2013-11-08 04:03:01
【问题描述】:

查看以下链接:

【PyObjC关键事件处理问题】Key Events Handling using PyObjC in Mac OS X

这是我最初的问题。我以某种方式设法找到了一个内置插件来解决关键事件管理,但使用的是 Python。它被称为 Tkinter。

from Tkinter import *

root = Tk()
def screenshot(*ignore): os.system("screencapture -s %s" % check_snapshot) 
root.bind('<Return>', greet)
root.mainloop(  )

按回车键,成功调用截屏函数,就可以了。

现在,我正在寻找的是,每当我按下组合键时,例如 Command+Shift+4,都应该调用上述函数。

对于 Command+Shift+3 和 Command+Shift+5 也应该以相同的方式完成。

这应该通过检查按下哪个键组合来完成,并相应地调用它们各自的屏幕截图函数。

此外,此应用程序的快捷方式不应仅依赖于此应用程序的窗口或框架,此窗口的窗口/框架不应可见,但快捷方式应有效并触发各自的功能。

root.withdraw()

这是隐藏 Tkinter 窗口的内置函数,但是我无法调用任何函数。这些功能只适用于 Tkinter 窗口,否则快捷键不起作用。

任何帮助将不胜感激。

【问题讨论】:

    标签: python event-handling tkinter keyboard-shortcuts keyevent


    【解决方案1】:

    Tkinter 事件仅在 tkinter 窗口具有焦点时起作用,并且要使其具有焦点,它必须是可见的。当另一个程序在前台时,您不能使用 tkinter 来处理事件。

    事件的格式是&lt;modifier-modifier-event-detail&gt;modifierevent 是可选的。事件类似于KeyPressButtonPressButtonRelease 等。 Detail 提供更多细节,例如哪个键或哪个按钮。例如,&lt;ButtonRelease-1&gt; 用于释放鼠标按钮 1(一)。

    修饰符是您指定 control、alt、delete 或 shift 的地方,您可以有多个。 Shift 有点特殊,因为它经常在 tkinter 看到之前由操作系统解释。因此,例如,美式英语键盘上的“Shift-3”是“#”。因此,您将使用&lt;#&gt; 而不是&lt;Shift-3&gt;

    综合起来,command-shift-3 就是&lt;Command-#&gt;。但是,如果您在 Mac 上执行此操作,它将拦截该事件并进行屏幕截图,因此绑定仅适用于 Windows 和 Linux。在每个操作系统上,都有一些您无法覆盖的键绑定。

    用于指定事件的格式的最佳描述是tcl/tk man page on bind。即使您询问 tkinter,底层引擎也是 tcl/tk。

    【讨论】:

    • 嗨,布莱恩,感谢您的帮助。我会看看它并尝试实施它......如果我再次陷入困境,会告诉你......谢谢...... :)
    猜你喜欢
    • 2021-10-17
    • 2020-09-28
    • 2010-09-17
    • 2011-09-14
    • 2018-03-17
    • 2014-09-05
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多