如何从keyPressEvent获取字母表值,如F1或F2?

2024-05-19 14:14:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想打印键值,比如['a','b',…,'f11','f12']

def keyPressEvent(self,e):
    print(e.key())

但当我按f1键时,功能键,然后它打印出值16777264。 如何将16777264转换为f1


Tags: keyselfdef键值f1printkeypresseventf11
2条回答

key()返回可以使用^{}枚举匹配的int

Qt提供了F键标识符(最多F35),因此您可以构建一个简单的映射并在键事件中检查它

class FKeyTest(QtWidgets.QWidget):
    fKeys = {}
    for f in range(1, 36):
        fKeys[getattr(QtCore.Qt, 'Key_F{}'.format(f))] = 'F{}'.format(f)

    def keyPressEvent(self, event):
        key = self.fKeys.get(event.key())
        if key:
            print(key)

将其与QtCore.Qt.Key枚举进行比较See here

if e.key() == QtCore.Qt.Key_F1:

此外,如果您需要任意按键的名称,可以使用:

from PyQt5.QtCore import Qt
keys = {}
for key, value in vars(Qt).items():
    if isinstance(value, Qt.Key):
        keys[value] = key

keys[16777264]
>>> 'Key_F1'

相关问题 更多 >