zoukankan      html  css  js  c++  java
  • pyqt5-键盘事件

    视频教程:https://v.qq.com/x/page/p08592bhsag.html 

    keyPressEvent(QKeyEvent)    键盘按下时调用

    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()   #控件开始捕获键盘

    #只有控件开始捕获键盘,控件的键盘事件才能收到消息. 

    self.label.releaseKeyboard()      #停止捕获键盘 

    键的编码:

    十六进制 十进制   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找到所有键盘值

  • 相关阅读:
    4.17 杂七杂八
    常量指针与指针常量
    作用域与命名空间
    QDataStream序列化的使用
    Qthread类的使用和控制台打印中文!
    Qproces的启动
    在centos7上安装部署hadoop2.7.3和spark2.0.0
    每天一点存储知识:集群Nas
    git 提交某个内容
    pyspider—爬取视频链接
  • 原文地址:https://www.cnblogs.com/liming19680104/p/10369197.html
Copyright © 2011-2022 走看看