PyQt5 组合键

本文介绍如何使用PyQt5实现键盘按键(包括组合键)和鼠标事件的响应,通过具体代码示例展示了如何捕捉和处理各种按键及鼠标操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyQt5 Ctrl+组合键

def keyPressEvent(self,event):

    print("按下:" + str(event.key()))

    if event.key() == Qt.Key_S:

        if QApplication.keyboardModifiers() == Qt.ControlModifier:

            self.actionFile.save(self.action_text.toPlainText())

            self.status.showMessage("保存成功 %s" % self.file)

使用pyqt5实现键盘(含组合键)鼠标事件响应

使用python3.6,pyqt5

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5 import QtCore
from PyQt5.QtCore import *

# 声明窗口
class Window(QWidget):
    # 初始化
    def __init__(self):
        super().__init__()
        self.initUI()
    # 设置窗口的参数
    def initUI(self):
        self.setGeometry(300, 300, 300, 200)
        self.setFixedWidth(300)
        self.setFixedHeight(200)
        self.setWindowTitle('按键检测')
        self.show()

    # 检测键盘回车按键,函数名字不要改,这是重写键盘事件
    def keyPressEvent(self, event):
        #这里event.key()显示的是按键的编码
        print("按下:" + str(event.key()))
        # 举例,这里Qt.Key_A注意虽然字母大写,但按键事件对大小写不敏感
        if (event.key() == Qt.Key_Escape):
            print('测试:ESC')
        if (event.key() == Qt.Key_A):
            print('测试:A')
        if (event.key() == Qt.Key_1):
            print('测试:1')
        if (event.key() == Qt.Key_Enter):
            print('测试:Enter')
        if (event.key() == Qt.Key_Space):
            print('测试:Space')
        # 当需要组合键时,要很多种方式,这里举例为“shift+单个按键”,也可以采用shortcut、或者pressSequence的方法。
        if (event.key() == Qt.Key_P):
            if QApplication.keyboardModifiers() == Qt.ShiftModifier:
                print("shift + p")
            else :
                print("p")

        if (event.key() == Qt.Key_O) and QApplication.keyboardModifiers() == Qt.ShiftModifier:
            print("shift + o")

    # 响应鼠标事件
    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            print("鼠标左键点击")
        elif event.button() == Qt.RightButton:
            print("鼠标右键点击")
        elif event.button() == Qt.MidButton:
            print("鼠标中键点击")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    sys.exit(app.exec_())

 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()      #停止捕获键盘 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值