使用 Python Tkinter 时如何 bind/map 全局热键?

How bind/map global hotkey when using Python Tkinter?

我想要 bind/map 一个全局热键,当应用程序 window 最小化并且用户不关注它时,它也可以工作。我正在寻找一种跨平台的方式。我可以使用 Tkinter 执行此操作吗?

使用 tkinter,如果 window 没有键盘焦点,它将不会收到按键事件,因此您将无法执行您想要的操作。

但是,使用 pynput 您可以监听按键事件:

from pynput.keyboard import Listener

def on_press(key):
    print("PRESSED", key)


with Listener(on_press=on_press) as listener:
    listener.join()

这应该是跨平台的(但有一些patform specific limitations)。

I want to bind/map a global hotkey, which also works when application window minimized and not focused on it. I'm looking for a cross-platform way.

你不能用 tkinter 做到这一点。 Tkinter 对此不提供支持。

你可以试试bindglobal

安装 pip 安装 bindglobal

具有相同的 tkinter 绑定 API 和完整的组合,但在全球范围内工作 支持线程安全和 tkinter mainthread