как я могу получить значение алфавита, например F1 или F2, из keyPressEvent? - PullRequest
0 голосов
/ 17 июня 2020

Я хочу напечатать значение ключа, например ['a', 'b', ..., 'f11', 'f12']

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

, но когда я нажимаю f1, функциональную клавишу, затем он напечатал значение 16777264. как я могу преобразовать 16777264 в f1?

Ответы [ 2 ]

1 голос
/ 17 июня 2020

key() возвращает int, который может быть сопоставлен с помощью перечисления 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)
0 голосов
/ 17 июня 2020

Сравните его с перечислением 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'
...