簡體   English   中英

如何從 keyPressEvent 中獲取 F1 或 F2 等字母值?

[英]how can i get the alphabet value like F1 or F2 from keyPressEvent?

我想打印像 ['a', 'b', ... , 'f11', 'f12'] 這樣的鍵值

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

但是當我按下 f1 時,function 鍵,然后打印值 16777264。我怎樣才能將 16777264 轉換為 f1?

key()返回一個可以使用QtCore.Qt.Key枚舉匹配的 int。

Qt 提供高達 F35 的 F 鍵標識符,因此您可以構建一個簡單的 map 並在鍵事件中檢查它。

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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM