首页 > 解决方案 > 如何从 keyPressEvent 中获取 F1 或 F2 等字母值?

问题描述

我想打印像 ['a', 'b', ... , 'f11', 'f12'] 这样的键值

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

但是当我按下功能键 f1 时,它会打印值 16777264。如何将 16777264 转换为 f1?

标签: pythonpyqt5qwidget

解决方案


key()返回一个可以使用QtCore.Qt.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)

推荐阅读