2

检查以下链接:

[PyObjC 关键事件处理问题] Mac OS X 中使用 PyObjC 处理关键事件

这是我最初的问题。我以某种方式设法找到了一个内置插件来解决关键事件管理,但使用的是 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 窗口,否则快捷键不起作用。

任何帮助,将不胜感激。

4

1 回答 1

2

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

事件的格式是<modifier-modifier-event-detail>修饰符事件是可选的。事件类似于KeyPress,ButtonPressButtonRelease。Detail 提供更多细节,例如哪个键或哪个按钮。例如,<ButtonRelease-1>用于释放鼠标按钮 1(一)。

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

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

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

于 2013-10-29T11:02:52.423 回答