Qt和PyQt中的组合键输入捕获处理

Qt按键键值 与 相关字符串 的映射表 Qt快捷键 映射 "Esc",/*Qt::Key_Escape 0x01000000 */ "Tab",/*Qt::Key_Tab 0x01000001 */ "Shift+Tab",/*Qt::Key_Backtab 0x01000002 */ "BackSpace",/*Qt::Key_Backspace 0x01000003 */ "Return",/*Qt::Key_ 阅读详情

一、引言

在《PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法大全及对比分析》介绍了PyQy中事件捕获方法,在《PyQt学习随笔:PyQt中捕获键盘事件后获取具体按键值的方法》介绍了获取按键值的方法。今天有网友咨询在PyQt中组合键输入怎么识别,例如:Ctrl+A 怎么显示的输入键值是A呢?老猿原来没测试过组合键,为此特地做了下测试,发现Qt和PyQt中的组合键输入确实需要特殊处理。

二、PyQt和Qt的组合键输入事件触发

2.1、组合键输入的事件触发

经老猿验证测试,在PyQt和Qt中输入组合键时:Ctrl+A时,会触发两次键盘事件:

  1. 第一次键盘事件得到的键值为:Qt::Key_Control;
  2. 第二次键盘事件得到的键值为:A(0x41)
    实际上此时Ctrl键还是没有释放,怎么获取这种组合状态呢?此时需要用到QKeyEvent.modifiers方法,来获取是否使用了辅助键(即修饰键),该方法返回的是一系列枚举值,具体取值在Qt文档中说明如下:
    在这里插入图片描述
    以上枚举值可以组合使用,如同时按下:Ctrl+Alt 两个键,则需要判断上述方法返回值是否等于Qt.ControlModifier|Qt.AltModifier

所以对于这种不可见键+可见字符键的组合输入,除了判断按键的返回Key外,还需要判断keyevent.modifiers方法的返回值。

三、实例代码

下面的代码判断是否含有组合输入Ctrl+其他可见字符键:

def keyPressEvent(self, keyevent):
        modifiers = keyevent.modifiers()
        print(f"In keyPressEvent:键盘按键 {'Ctrl+' if modifiers == (Qt.ControlModifier) else ' '},{keyevent.text()},0X{keyevent.key():X} 被按下")

下面的代码判断是否含有组合输入Ctrl+Alt+A被按下:

def keyPressEvent(self, keyevent):
        modifiers = keyevent.modifiers()
        if modifiers == (Qt.ControlModifier|Qt.AltModifier ) and keyevent.text()=='A':
            print("Ctrl+Alt+A pressed!")

四、其他

4.1、含有多个可见字符的组合键的识别

上面介绍的方法可以识别使用Ctrl、Alt、Shift修饰键的情况,但如果要是在组合键中包含多个可见字符,却不能用这种方法,此时只能将键盘按键按下时的键值追加到缓冲区保存,在按键释放时再将对应字符删除,然后再判断缓冲区中是否包含多个的可见字符值。

4.2、对于字母大小写的识别

在Qt和PyQt中,对于字母的大小写,QKeyEvent.key()返回值是一样的,但keyevent.text()返回值是区分了大小写的,所以处理时要注意。

五、小结

本文介绍了在Qt和PyQt中怎么识别组合键的方法,需要注意对于修饰键+组合键的方法,需要QKeyEvent.modifiers,而对于多个可见字符的组合键,需要对键盘按键按下和释放都进行处理。

更多关于PyQt的介绍请参考付费专栏《使用PyQt开发图形界面Python应用》或免费专栏《PyQt入门知识》。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

如对文章内容存在疑问,可在博客评论区留言,或通过扫描博客左边的二维码关注:老猿Python 微信公号发消息咨询。

关于老猿的付费专栏

  1. 付费专栏《 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 使用PyQt开发图形界面Python应用专栏目录》;

  2. 付费专栏《 moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《moviepy音视频开发专栏文章目录》;

  3. 付费专栏《 OpenCV-Python初学者疑难问题集》为《 OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《 OpenCV-Python初学者疑难问题集专栏目录 》

  4. 付费专栏《Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取优快云文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《 OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《 专栏:Python基础教程目录》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 ░

使用pyqt5实现键盘(含组合键)鼠标事件响应 使用pyqt5实现键盘(含组合键)鼠标事件响应 使用python3.6,pyqt5,在macOS上测试有效。 import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5 import QtCore from PyQt5.QtCore import * # 声明窗口 class Window(QWidget... 阅读详情

相关推荐

Mac系统高效搭建PyQt5与Qt Designer开发环境的完整指南

本文详细介绍了在Mac系统上高效搭建PyQt5与Qt Designer开发环境的完整指南,包括环境准备、安装Qt Designer的三种方法、PyQt5安装与验证、开发工具链配置以及实战开发流程演示。通过专业的步骤和优化技巧,帮助开发者快速掌握图形界面应用开发,提升工作效率。

weixin_29299807的博客 436

QT开发中常用的快捷键(Windows+QT)

Windows好用的快捷键: 打开快速访问文件: win+e 快速调出计算器: win+r打开命令行后,输入cala回车 切换运行中的软件:alt+tab 切换当前网页页面:ctrl+tab 文件重命名:F2 录屏:WIN+G点击录制->录制 结束会自动保存到以下路径 截屏:Prt Sc (笔记本要加fn) 结束会自动保存到以下路径 一般只截取部分图片时: 使用windows自带的截图工具可以固定到任务栏或者设置打开的快捷方式 如图 当遇上想复制的文案但是复制需要成为会员或者付费时: 选

caicai_xiaobai的博客 2119

pyqt5控件自适应窗口知识点汇总(超详细讲解,持续更新中…)

控件太多?布局太丑?看这一篇就够啦!

遇己 2万+

Qt之 捕获键盘的组合键

一、简述 之前做了截图的小应用——Qt 之 简单截图功能,于是就想到了QQ截图直接使用组合键 Ctrl + Alt + A 就可以调用截图了。于是乎自己重写了 keyPressEvent事件用来捕获当前键盘的组合键,这里简单介绍一下Qt中如何捕获我们按下的某个按键或者组合键。 二...

我不是码农的博客~~~ 3247

PyQt笔记:捕获键盘事件并获取按键值的方法

上述代码中,我们使用了 PyQT 的快捷键对象 QShortcut,通过创建一个 QShortcut 对象并绑定键盘事件来实现捕获功能。比如,当用户按下某个按键时,我们可以根据该按键的具体值来实现相应的功能。接下来,本篇文章将介绍如何在PyQt中捕获键盘事件,并获取按键值的方法。PyQt中获取按键值的方法与普通的 Python 程序有所不同,我们需要使用 event() 方法来实现。在这里,我们首先通过事件对象的 sender() 方法获取事件的具体信息,然后利用 key() 方法获取按键的具体值。

TechBurst的博客 983

使用PyQt获取组合键

在这个方法中,我们通过检查event.modifiers()方法获取按下的修饰键(例如Ctrl、Shift、Alt等),如果检测到Ctrl键被按下,则通过event.key()方法获取与组合键关联的键位。PyQt是一个Python的GUI库,它的强大功能可以让人们轻松地创建漂亮的用户界面。当我们使用PyQt开发一个应用程序时,有时候需要获取组合键的输入。本文将教您如何在PyQt中获取组合键的输入。欢迎尝试本文提供的方法来获取PyQt组合键输入。这将使您的应用程序更加灵活和易于使用。使用PyQt获取组合键。

. 520

【python】PyQt5事件传递,鼠标动作捕获,键盘按键捕获原理与应用实战

控件消息的处理是从内到外的,即当前控件对传递来的消息无法处理时会交给它的父控件进行处理,如果父控件也无法处理就交给它的父控件的父控件处理,…,直到顶层控件也无法处理则结束。 当一个控件被触发了一个特定的行为时, 就会调用特定的方法, 来将事件传递给开发人员, 方便处理。 重写这些事件方法, 就可以监听相关的信息。 在父子控件之间,可以设置事件是否传递。

景天科技苑 1万+

Qt及PyQt中的组合键输入处理

在使用 PyQt 编写 GUI 程序时,常常需要对键盘事件进行处理。当用户按下多个键同时触发某个操作时,我们就需要使用组合键输入来捕获用户的操作。在本文中,我们将介绍如何在 PyQt 中实现组合键输入的响应。通过这个示例,我们可以看到 PyQt 中如何捕捉用户的组合键输入。在实际应用中,我们可以根据需要进行自定义的修饰符和键码组合,实现更为灵活的交互体验。通过排列和组合不同的修饰符和键码,我们就能实现捕获特定的组合键输入。参数包含了用户按下的键码和修饰符,我们可以使用。,该方法会在用户按下键时触发。

. 570

PyQt5 组合键

PyQt5 Ctrl+组合键 defkeyPressEvent(self,event): print("按下:"+str(event.key())) ifevent.key()==Qt.Key_S: ifQApplication.keyboardModifiers()==Qt.ControlModifier: s...

EmbeddedCoder 的优快云博客 4651

pyqt获取组合键

pyqt获取组合键

jacke121的专栏 4403

IQA图像质量评价 数据集介绍(LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K)

LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K 数据集介绍

qq_37925923的博客 1万+

Python - PyQt5环境搭建和基本工程搭建

开发工具PyCharm39.win10系统下,按下Win+R组合键,这将打开“运行”对话框。在对话框中输入“cmd”,进入命令提示符窗口‌,本人的Python39安装在D:盘下输入命令:由于国内网络原因很多时候出现链接超时错误,可更换国内镜像:再执行:在Python39\Lib\site-packages下出现PyQt5和pyqt5_tools文件夹。

sinat_33635313的博客 2147

YOLOv8工业级增强实战:小目标检测与HDR鲁棒性优化

YOLO(You Only Look Once)作为主流实时目标检测框架,其核心价值在于模块化架构与工程可扩展性。理解YOLOv8的Anchor-Free设计、C2f特征融合机制及Detect头部解耦原理,是实现性能突破的基础。在工业落地中,真实瓶颈往往不是模型版本迭代,而是小目标漏检、高动态范围(HDR)场景适应差、密集遮挡ID断裂等具体问题。通过配置层动态多尺度训练、物理感知数据增强、Neck跨尺度注意力注入、质量感知损失函数升级等七层增强策略,可在不更换主干的前提下显著提升mAP与边缘设备推理效率。本

weixin_32667439的博客 258

新手得看--Python+PyCharm+PyQt5环境配置(详细图文演示)

本文详细介绍了Python+PyCharm+PyQt5环境的完整配置流程,帮助初学者实现从0到1的突破。主要内容包括:Python 3.8的安装与验证、pip镜像源配置;PyCharm社区版的安装设置;PyQt5库及工具包(5.15.11版本)的安装;以及在PyCharm中配置Qt Designer、Pyuic等开发工具的方法。通过图文并茂的步骤指导,读者可以快速搭建起PyQt5开发环境,为后续GUI应用开发奠定基础。

懷淰メ的博客 3173

i茅台APP加密参数逆向分析:MT-Device-ID与mt-v生成算法

在移动应用安全领域,参数加密是防止API滥用的重要手段。通过对通信协议的逆向分析,可以揭示加密参数的生成原理,这对理解移动应用安全机制具有重要意义。以i茅台APP为例,其关键接口使用了MT-Device-ID和mt-v两个加密参数,前者基于设备硬件信息生成,后者则通过动态签名机制确保请求时效性。这类技术广泛应用于电商、金融等需要高安全性的场景。通过抓包工具和逆向工程手段,可以还原出从设备指纹生成到动态签名的完整技术链条,其中涉及MD5、SHA256等常见哈希算法的应用。掌握这些加密参数的生成逻辑,不仅有助于

weixin_28568819的博客 320

Discuz IIS上传附件大于28M失败报错Upload Failed.修改maxAllowedContentLength(图文教程)

下图:Discuz X3.5的系统信息,上传许可为1024MB(1GB)论坛为局域网论坛,仅供内部同事交流使用!使用官方最新的Discuz! X3.5 Release 20231221 UTF-8 下图:选择上传附件(提示可以最大上传100M) 下图:模拟上传84M的文件(

骚团长的博客 1826

QT的keypressevent只响应功能键不响应字母键或者组合键

在pyqt中,则在__init__中添加 self.grabKeyboard()这位兄弟准确说明了解决方案。

atregret的博客 560

多模态融合相关概念

多模态图像融合

weixin_43921949的博客 7352

键盘事件无效_实战PyQt5: 097-键盘事件

在一个GUI桌面应用中,用户和程序之间的交互一般通过键盘和鼠标来完成,处理有关键盘和鼠标的事件是一个GUI程序几乎不可或缺的部分,下面介绍在Qt中处理输入焦点和键盘事件的相关知识。设置控件的输入焦点在一个窗口中,一般会有多个控件在其中,如果一个控件要获得键盘输入信息,必须将输入焦点设置到该控件上,在窗口中,一个时刻只有一个(或者没有) 控件可以获得输入焦点。可以使用QWidget的下列方法来操作控...

weixin_32836713的博客 1132

论文阅读 AIED 2024 Coding with AI: How Are Tools Like ChatGPT Being Used by Students in Foundational Pro

该论文题为《Coding with AI: How Are Tools Like ChatGPT Being Used by Students in Foundational Programming Courses》,由美国犹他州立大学的 Aashish Ghimire 与 John Edwards 共同撰写,发表于人工智能与教育领域顶级会议。

CSPhD-winston的博客 307

Debian Buster 软件源失效问题

摘要:基于Debian Buster的ARM64设备因系统版本结束支持(EOL)导致apt update报错404。解决方案包括:1)改用Debian官方存档源(需禁用安全检查);2)升级至受支持的Debian 11/12版本(推荐);3)临时使用第三方镜像源(不推荐)。操作步骤涉及修改sources.list、处理NTP同步问题及清理残留配置。建议优先采用版本升级方案以获得持续安全更新,避免使用过时系统带来的安全隐患。文中提供了完整命令示例和操作记录供参考。

yy_xzz的博客 2176

018.PyQt5_QWidget_事件消息

【代码】018.PyQt5_QWidget_事件消息。 当一个控件被触发了一个特定的行为时, 就会调用特定的方法, 来将事件传递给开发人员, 方便处理 重写这些事件方法, 就可以监听相关的信息 当用户对控件进行了某些操作时,根据事件机制,会一步一步传递(分发),最终触发指定的事件

weixin_50296259的博客 588

YOLOv11改进 | 模型知识蒸馏篇 | 利用模型蒸馏改进YOLOv11进行无损涨点 | 离线蒸馏(附代码 + 完整文件 + 解析教程)

这篇文章给大家带来的最新改进是模型的蒸馏,利用教师模型指导学生模型从而进行模型的涨点,本文的内容不仅可以用于论文中,在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术,所以大家可以仔细学习一下本文的内容,本文从YOLOv8的项目文件为例,进行详细的修改教程,文章内包括完整的修改教程,针对小白我出了视频修改教程,如果你还不会我提供了修改后的文件大家直接运行即可,所以说不用担心不会适用!模型蒸馏真正的无损涨点,蒸馏你只看这一篇文章就足够了!欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 4316

PyQt设置快捷键

结合QShortcut和QKeySequence

XerCis的博客 4968

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 人工智能数学基础---定积分1:定积分的概念以及近似计算
下一篇: 人工智能数学基础---定积分2:定积分的性质
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值