Я хочу напечатать значение ключа, например ['a', 'b', ..., 'f11', 'f12']
def keyPressEvent(self,e): print(e.key())
, но когда я нажимаю f1, функциональную клавишу, затем он напечатал значение 16777264. как я могу преобразовать 16777264 в f1?
key() возвращает int, который может быть сопоставлен с помощью перечисления QtCore.Qt.Key.
key()
QtCore.Qt.Key
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. См. Здесь .
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'