視頻教程:https://v.qq.com/x/page/p08592bhsag.html html
keyPressEvent(QKeyEvent) 鍵盤按下時調用app
keyReleaseEvent(QKeyEvent) 鍵盤釋放時調用學習
from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton
import sys
from PyQt5.QtGui import QCursor
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QPixmap
class Label(QLabel):
def keyPressEvent(self, QKeyEvent): # 鍵盤某個鍵被按下時調用
#參數1 控件
if QKeyEvent.key()== Qt.Key_A: #判斷是否按下了A鍵
#key() 是普通鍵
print('按下了A鍵')
if QKeyEvent.modifiers()==Qt.ControlModifier and QKeyEvent.key()== Qt.Key_A:#兩鍵組合
#modifiers() 判斷修飾鍵
#Qt.NoModifier 沒有修飾鍵
#Qt.ShiftModifier Shift鍵被按下
#Qt.ControlModifier Ctrl鍵被按下
#Qt.AltModifier Alt鍵被按下
print('按下了Ctrl-A鍵')
if QKeyEvent.modifiers() == Qt.ControlModifier|Qt.ShiftModifier and QKeyEvent.key() == Qt.Key_A: # 三鍵組合
print('按下了Ctrl+Shift+A鍵')
class win(QWidget): #建立一個類,爲了集成控件
def __init__(self):
super().__init__()
self.resize(600,600)
self.setWindowTitle('事件學習')
self.num=0
self.label=Label('標籤',self)
self.label.move(100,100)
self.label.grabKeyboard() #控件開始捕獲鍵盤
# 只有控件開始捕獲鍵盤,控件的鍵盤事件才能收到消息
if __name__=='__main__':
app=QApplication(sys.argv) #建立應用
w=win()
w.show()
sys.exit(app.exec_())
self.label.grabKeyboard() #控件開始捕獲鍵盤ui
#只有控件開始捕獲鍵盤,控件的鍵盤事件才能收到消息. 編碼
self.label.releaseKeyboard() #中止捕獲鍵盤 spa
鍵的編碼:3d
鍵 | 十六進制 | 十進制 | Qt枚舉值 | 鍵 | 十六進制 | 十進制 | Qt枚舉值 |
ESC | 0x01000000 | 16777216 | F1 | 0x01000030 | 16777264 | ||
F2 | 0x01000031 | 16777265 | F3 | 0x01000032 | 16777266 | ||
F4 | 0x01000033 | 16777267 | F5 | 0x01000034 | 16777268 | ||
F6 | 0x01000035 | 16777269 | F7 | 0x01000036 | 16777270 | ||
F8 | 0x01000037 | 16777271 | F9 | 0x01000038 | 16777272 | ||
F10 | 0x01000039 | 16777273 | F11 | 0x0100003a | 16777274 | ||
F12 | 0x0100003b | 16777275 | Pause Break | 0x01000008 | 16777224 | ||
` | 0x60 | 96 | Prt Sc | ||||
1 | 0x31 | 49 | Delete | 0x01000007 | 16777223 | ||
2 | 0x32 | 50 | 3 | 0x33 | 51 | ||
4 | 0x34 | 52 | 5 | 0x35 | 53 | ||
6 | 0x36 | 54 | 7 | 0x37 | 55 | ||
8 | 0x38 | 56 | 9 | 0x39 | 57 | ||
0 | 0x30 | 48 | - | 0x2d | 45 | ||
= | 0x3d | 61 | Backspace | 0x01000003 | 16777219 | ||
Tab | 0x01000001 | 16777217 | q | 0x51 | 81 | ||
w | 0x57 | 87 | e | 0x45 | 69 | ||
r | 0x52 | 82 | t | 0x54 | 84 | ||
y | 0x59 | 89 | u | 0x55 | 85 | ||
i | 0x49 | 73 | o | 0x4f | 79 | ||
p | 0x50 | 80 | [ | 0x5b | 91 | ||
] | 0x5d | 93 | \ | 0x5c | 92 | ||
a | 0x41 | 65 | Caps Lock | 0x01000024 | 16777252 | ||
s | 0x53 | 83 | d | 0x44 | 68 | ||
f | 0x46 | 70 | g | 0x47 | 71 | ||
h | 0x48 | 72 | j | 0x4a | 74 | ||
k | 0x4b | 75 | l 小寫l | 0x4c | 76 | ||
; | 0x3b | 59 | ' | 0x27 | 39 | ||
Enter | 0x01000004 | 16777220 | Shift | 0x01000020 | 16777248 | ||
z | 0x5a | 90 | x | 0x58 | 88 | ||
c | 0x43 | 67 | v | 0x56 | 86 | ||
b | 0x42 | 66 | n | 0x4e | 78 | ||
m | 0x4d | 77 | , | 0x2c | 44 | ||
. | 0x2e | 46 | / | 0x2f | 47 | ||
Ctrl | 0x01000021 | 16777249 | Fn | ||||
win | 0x01000022 | 16777250 | Alt | 0x01000023 | 16777251 | ||
空格 | 0x20 | 32 | 菜單鍵 | 0x01000055 | 16777301 | ||
向上鍵 | 0x01000013 | 16777235 | Qt.Key_Up | 向左鍵 | 0x01000012 | 16777234 | Qt.Key_Left |
向下鍵 | 0x01000015 | 16777237 | Key_Down | 向右鍵 | 0x01000014 | 16777236 | Key_Right |
組合符號 | |||||||
! | 0x21 | 33 | Key_Exclam | @ | 0x40 | 64 | Key_At |
注:能夠在QtAssistant中輸入Qt::Key找到全部鍵盤值code