【发布时间】:2017-05-29 08:55:06
【问题描述】:
这是我尝试捕获媒体键(如播放、暂停、上一个等)的代码:
import sys
from PyQt5.QtCore import Qt, QEvent
from PyQt5.QtWidgets import QWidget, QApplication
class test(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 300)
self.show()
app.installEventFilter(self)
def eventFilter(self, source, event):
if event.type() == QEvent.KeyPress:
print('KeyPress: %s [%r]' % (event.key(), source))
return super(test, self).eventFilter(source, event)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = test()
sys.exit(app.exec_())
它会捕获每个密钥,但不会捕获任何媒体密钥。我也尝试了 QKeySequenceEdit 并替换了 KeyPressEvent,但它们都没有捕获媒体键
【问题讨论】:
-
您确定这不是硬件问题吗?您正在开发什么操作系统?我刚刚测试了您的代码,它在我的计算机上运行良好(包括多媒体键)。
-
这不是硬件问题,因为热键在 Clementine 中有效。我的操作系统是带 KDE 的 Antegro
-
好吧,我在 Windows 中对其进行了测试,所以这实际上可能是一个错误。我认为密钥
Qt::AA_CaptureMultimediaKeys存在于 Qt4 中,但在 Qt5 中被删除。您应该考虑打开一个错误报告(我不确定它是特定于 Qt5 还是 pyQt5)。