一、引言

在《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爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

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

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

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

老猿Python,跟老猿学Python!

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

Qt和PyQt中的组合键输入捕获处理相关推荐

  1. 在Android系统中添加组合键快捷启动功能

    启动系统特定功能的组合键的判断应该在系统分发按键消息前处理, 这样从系统运行 的角度来说成本最低. 添加组合键处理需要先搞清楚按键消息在framework中采集 和分发子系统的工作流程, 虽然有and ...

  2. python发送esc_Python组合键输入检测ESC和En

    在下面的doDebuggingMenu函数中,我使用raw_input函数(使用python2.6)获取用户输入.此函数将一直等到用户输入字符序列并按enter键.当然,我希望用户只需按键盘上的ESC ...

  3. Qt模拟键盘按键与组合键

    Tab键: QKeyEvent tabKey(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier);QCoreApplication::sendEvent(th ...

  4. 按键精灵在excel中使用组合键Ctrl+C首次复制没有内容,原来与它有关

    按键精灵是一个非常好的东西,它号称只要你能在屏幕上做的事情他都能做,一些重复的动作我们可以用到它,最简的方法你可以去录制,当然如果你把它的脚本搞懂,也可以写出一些非常巧妙的动作来,可以永远不知疲倦的为 ...

  5. Linux中的组合键

    Ctrl+a:光标移到命令行头 Ctrl+e:光标移动到命令行尾 Ctrl+u:删除光标之前的所有内容 Ctrl+k:删除光标之后的所有内容 Ctrl+d:退出登陆 Ctrl+y:在光标处粘贴复制或者 ...

  6. 第三十四章、PyQt中的输入部件:QComboBox组合框功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 Designer中输入工具部件中的Combo Box组合框与 ...

  7. 计算机win e怎么按,win7电脑中的Win+E组合键无法使用怎么办?

    在操作电脑的时候,更多的用户习惯使用键盘上的快捷键,也就是组合键的方式来进行操作,因为对于很多用户来说,组合键的方式操作起来更加的方便,办事的效率也会相应的提高很多,例如咱们经常使用到的ctrl+A的 ...

  8. Ctrl+Alt组合键在VMware虚拟机中如何使用

    http://kb.vmware.com/kb/1011705 现象: Ctrl+Alt+其他键的组合并不如期生效,比如Ctrl+Alt+Esc,Ctrl+Alt+F2(Linux切换终端) 分析: ...

  9. 号称全网最全CAD组合键功能详解

    左手键盘右手鼠标,一向都是大家熟悉的使用CAD的操作方式. 就算不信手拈来也基本了然于心. 然而如果现在问你,命令行隐藏了,应该怎么调用出来,你可以第一时间反应过来是什么组合键吗? 暂时忘记没关系,希 ...

  10. cc2530定时器和捕获比较_ALIENTEK 阿波罗 STM32F767 开发板资料连载十四章 输入捕获实验...

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 http://weixi ...

最新文章

  1. 独家 | 几个Jupyter笔记本的使用技巧
  2. 社交网络图挖掘2--社区的直接发现和图划分
  3. python主要用来开发什么-python主要用于什么开发?
  4. Auto Lisp 标注子样式_FAIR 开放大规模细粒度词汇级标记数据集 LVIS,连披萨里的菠萝粒都能完整标注...
  5. 数据库-优化-MYSQL执行引擎介绍
  6. Simpy学习:基本运行与终止(一)
  7. 操作可能会破坏运行时稳定性的解决办法
  8. JavaWeb开发模式
  9. php环境安装教程,PHP运行环境配置与开发环境的配置(图文教程)
  10. coherence mysql_Coherence Step by Step 第三篇 缓存(四) 缓存数据源(翻译)
  11. 后台管理系统模板,简易模板
  12. php中rand函数怎么用,php rand函数用法是什么
  13. 钉钉群机器人关键词自动回复_企业微信营销机器人怎么接入?
  14. 测试员如何面对30岁后的下坡路,伤不起的年龄,职业道路何去何从?
  15. 局域网中使用来宾账户访问计算机
  16. 基于GCN和句法依存分析的情感分析
  17. 电脑蓝屏c000021a代码错误
  18. c语言数组124048,根据GPS经纬度判断当前所属的市区
  19. (codeforces)D. Cloud of Hashtags
  20. mybatis分页配置

热门文章

  1. python django 基本测试 及调试 201812
  2. 【Python百日进阶-Web开发-Feffery】Day429 - fac实例:dash多页面相互点击状态保存
  3. Linux应急响应排查
  4. Reflex仓库管理系统(WMS)简介
  5. 植物大战僵尸修改存档文件-C1认证
  6. 水溶性羧基化 CdSe/ZnS 量子的特点
  7. QR码生成原理(一)
  8. ssh-keygen命令详解
  9. 刚刚,微信官宣 1000W+ 跨年红包开发,速度搞!
  10. 微信建群怎么建?2个方法,快速学会!