按键显示器(判断键盘监听器获得的值为普通Key还中modifiers)
1 import sys 2 from PyQt5 import QtWidgets,QtCore 3 from PyQt5.QtCore import Qt 4 from PyQt5.uic.properties import QtGui 5 6 key_list=['Qt.ControlModifier','Qt.ShiftModifier','Qt.AltModifier','Qt.Key_A','Qt.Key_B','Qt.Key_C','Qt.Key_D',\ 7 'Qt.Key_E','Qt.Key_F','Qt.Key_G','Qt.Key_H','Qt.Key_I','Qt.Key_J','Qt.Key_K','Qt.Key_L','Qt.Key_M','Qt.Key_N\ 8 ','Qt.Key_O','Qt.Key_P','Qt.Key_Q','Qt.Key_R','Qt.Key_S','Qt.Key_T','Qt.Key_U','Qt.Key_V','Qt.Key_W','Qt.Key_X\ 9 ','Qt.Key_Y','Qt.Key_Z'] 10 11 class Mywindow(QtWidgets.QWidget): 12 def __init__(self): 13 super(Mywindow, self).__init__() 14 self.create_Ui() 15 16 def create_Ui(self): 17 18 self.label= QtWidgets.QLabel(self) 19 label = self.label 20 label.setText("欢迎光临") 21 label.move(250,150) 22 label.resize(100,50) 23 label.setStyleSheet("background-color:yellow;color:blue;border: 1px solid gray;border-radius:5px") 24 25 26 def keyPressEvent(self, evt): 27 t="显示按键" 28 29 for i in key_list: 30 31 if evt.modifiers() == eval(i): #将获取的键值与序列中的地址比较 32 t = i.split('.')[-1].split('Mod')[0] #将序列中的值进行分割:即将字符串中'.'之前和'Mod'之后的字符舍去,剩余字符赋值给t; 33 break 34 elif evt.key() == eval(i): 35 t = i.split('_')[-1] #将序列中'_'前的字符舍去,并赋值给t 36 break 37 else: 38 t = evt.text() 39 self.label.setText("按键:"+t) 40 self.label.adjustSize() 41 42 43 44 app = QtWidgets.QApplication(sys.argv) 45 46 window = Mywindow() 47 window.resize(500,500) 48 window.move(350,150) 49 window.setWindowTitle("欢迎光临") 50 window.grabKeyboard() 51 52 # window.setMouseTracking(True) 53 window.show() 54 55 sys.exit(app.exec_()) 56 57
另外,判断 组合功能键可以用:
if evt.modifiers() == Qt.ControlModifier | Qt.ShiftModifier and evt.key() == Qt.Key_S:
来判断是否按下了 “Ctrl+Shift+S"组合键

浙公网安备 33010602011771号