Pyside(或PyQt)全局快捷键

3 投票
1 回答
2058 浏览
提问于 2025-04-17 22:04

我想为我的应用程序创建一个快捷键,这样即使我的应用程序没有被选中(也就是没有焦点),它仍然可以接收输入。不过,QShortcut和QApplicationShortcut似乎不能满足我的需求。

这是我现在的代码。我希望能够在其他应用程序有焦点的时候,触发 self.onplaybutton() 这个功能。

self.shortcut = QtGui.QShortcut(self.mainWindow)
self.shortcut.setKey('A')
self.shortcut.activated.connect(lambda: self.onplaybutton())

1 个回答

5

目前,Qt并没有提供一个可以设置全局快捷键的接口,所以你不能直接通过PySide或PyQt来实现这个功能。

因此,你需要使用一个外部库,而现在唯一可用的似乎是libqxt,它里面有一个叫做QxtGlobalShortcut的类。

幸运的是,pygs项目为这个类提供了PyQt的绑定,这样你就至少有一种方法可以实现你想要的功能。


更新

如果你需要PyQt5的支持,可以使用PyQxtGlobalShortcut,这是pygs的一个分支。这个项目自2016年以来没有更新过,但libqxt似乎仍在积极维护,所以可能不需要太多努力就能更新到最新版本。(顺便说一下,实际上还有一个更新的分支在这里。)

撰写回答