【发布时间】:2020-07-31 14:01:36
【问题描述】:
如何在 PyQT5 中实现关键监听器?即使应用在后台,我也想检测按键。
from PyQt5 import QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
import sys
class Window(QWidget):
...
def keyPressEvent(self, e): # doesnt work when app is in background
if e.key() == Qt.Key_F3:
print(1)
elif e.key() == Qt.Key_F4:
print(0)
...
App = QApplication(sys.argv)
App.setStyle('Fusion')
window = Window()
sys.exit(App.exec())
【问题讨论】:
-
仅对具有键盘焦点的小部件(包括顶级窗口)处理键盘事件。你不能从普通的 PyQt 做到这一点,根据你使用的操作系统有不同的解决方案,你可能需要查看 pypi.python.org/pypi/keyboard 或 pypi.org/project/pynput。请注意,两者都需要一个单独的 QThread 子类,因为它们在自己的“事件循环”上运行以等待事件。
-
你能给我一个例子,它应该如何使用键盘库来完成?我如何在课堂上使用keyboard.is_pressed?
-
你打算为什么操作系统做这个?因为
keyboard模块在Linux 上需要root 访问权限(并且似乎不支持MacOS),而pyinput在所有三个平台上都可以工作,但在MacOS 上需要root 访问权限。 -
在 Windows PC 上。
标签: python pyqt5 keyboard-events keylogger