检查以下链接:
[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( )
按return(回车)键,会成功调用截图函数,并且可以运行。
现在,我正在寻找的是,每当我按下组合键时,比如 Command+Shift+4,上面的函数应该被调用。
对于 Command+Shift+3 和 Command+Shift+5 也应该以相同的方式完成。
这应该通过检查按下的键组合来完成,因此,应该调用它们各自的屏幕截图函数。
此外,此应用程序快捷方式不应仅依赖于此应用程序的窗口或框架,窗口/此窗口的框架不应可见,但快捷方式应起作用并触发其各自的功能。
root.withdraw()
这是隐藏 Tkinter 窗口的内置函数,但是我无法调用任何函数。这些功能仅适用于 Tkinter 窗口,否则快捷键不起作用。
如有任何帮助,我们将不胜感激。
最佳答案
Tkinter 事件仅在 tkinter 窗口具有焦点时起作用,并且要使其具有焦点,它必须是可见的。当另一个程序在前台时,您不能使用 tkinter 来处理事件。
事件的格式是<modifier-modifier-event-detail>
, modifier 和 event 是可选的。事件类似于 KeyPress
, ButtonPress
, ButtonRelease
等等。 Detail 提供更多细节,例如哪个键或哪个按钮。例如,<ButtonRelease-1>
用于释放鼠标按钮 1(一个)。
修饰符是指定control、alt、delete或shift的地方,可以有多个。 Shift 有点特殊,因为它通常在 tkinter 看到它之前由操作系统解释。因此,例如,美式英语键盘上的“Shift-3”是“#”。因此,而不是 <Shift-3>
你会用 <#>
.
将所有这些放在一起,command-shift-3 将是 <Command-#>
.但是,如果您在 Mac 上执行此操作,它将拦截该事件并进行屏幕截图,因此该绑定(bind)仅适用于 Windows 和 Linux。在每个操作系统上,都有一些您无法覆盖的键绑定(bind)。
用于指定事件的格式的最佳描述是 tcl/tk man page on bind .即使你问的是 tkinter,底层引擎是 tcl/tk。
关于python - 在 Python 中使用 Tkinter 进行关键事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19650779/