
pyqt5,6之图形界面填坑之注册全局快捷键实现主窗口隐藏显示切换遇到的问题
软件简介
去评论
去报错
前言:
对于常用电脑的工作人员来说,剪贴板工具可以帮助他们更快地复制和粘贴文本、图像和其他类型的数据。可以将经常使用的文本片段、常见的回复模板、重复的命令等保存到剪贴板工具中,随时调用它们,避免了重复输入和查找的繁琐。Windows 10和Windows 11都提供了自动的剪贴板工具,但最让人受不了的就是记录数据量太少并且不能使用快捷键输入。所以一款好用的方便的剪贴板工具就显得尤为重要。小编试过很多款复制粘贴助手类型的工具,大多都有着各种问题,诸如:有的功能太过复杂、有的功能又太过单一,甚至有的还要充会员.....目前小编如何的是“蓝牛复制粘贴助手”就是要收费的,而且没有单条数据置顶排序功能。所以小编就相关使用python3+pyqt6制作一款自用的剪贴板自制粘贴助手工具......
我是怎么做的?
熟话说万事开头难,由于没有过多的pyqt界面开发验验,一切都得现学现用,我这开头也难。没办法就想到了目前最火的AI模型chatgpt,正常最近分享过一款免费的CHATGPT“灵动Ai助手”,于是跟gpt说“给我一个pyqt6基于QApplication的简单用例”,在chatgpt的的帮助下将代码完善后终于完成了界面的制作编写并跑通。
具体代码这里就不贴出来了,文章下方会给出所有相关代码的下载。这里只说说使用大概的过程,具体自行百度吧。
1、使用QT designer设计出一个界面,并将界面的.ui文件转换成.py的代码得到Ui_MainWindow类,当然在主程序中也可直接调用.ui的界面文件。
2、结合上面提到用chatGpt生成的代码片段,引入.ui文件转换成.py的代码库。这里要说一下,我已知的比较通用的引入并使用Ui_MainWindow类的方法分继承Ui_MainWindow和承继承Ui_MainWindow,使用上大同小异,下图给出参考
3、剩下的就是窗口及控件的美化了,我将我的pyqt6界面设置了无边框、背景透明等效果,具体代码请在下方下载;
python+pyqt6界面开发都有哪些坑?
坑太多了,一下真说不清楚,如pyqt6和pyqt5的代码不通用、界面卡死等。。。。
1、pyqt6和pyqt5的代码不通用主要原因是在pyqt6版本中对部分方法及类用了修改及迁移,然而社区对应pyqt6的资料太少所以只能找到pyqt5的代码例子。(后面都是通过灵动Ai助手解决的代码兼容问题)
2、pyqt5、6使用第三方快捷键监听库 坑死人的大坑。
在开发过程中,需要通过全局快捷键实现pyqt6窗口的显示和隐藏,百度一搜索就能找到相关的代码例子,诸如下面代码片段:
#下面是一个监听全局快捷键的Python代码示例,它使用了第三方库`keyboard`。 ```python import keyboard def on_hotkey(): print("Global hotkey pressed!") # 注册全局快捷键 Ctrl+Shift+A keyboard.add_hotkey("Ctrl+Shift+A", on_hotkey) # 启动监听 keyboard.wait() ``` #下面是一个监听全局快捷键的Python代码示例,它使用了第三方库`pynput`。 from pynput import keyboard def on_press(key): if key == keyboard.Key.ctrl_l and key == keyboard.Key.shift_l and key.char == 'a': print("Global hotkey pressed!") # 创建监听器 listener = keyboard.Listener(on_press=on_press) # 启动监听 listener.start() # 保持运行,以便监听器在后台继续监听 listener.join()
确实,不论是keyboard还是pynput库在python单独使用都很不错,然而当我将它们回到pyqt6代码中后就出问题了。
问题主要出现在通过快捷键切换pyqt主窗口隐藏和显示时,窗口出现了卡死的情况,并且在窗口恢复时无法将窗口显示在最上层(最小化和恢复最小化也是一样问题)
如上图,窗口窗口默认是在最上层显示,然后通过快捷键将窗口隐藏,期间如果操作过其它软件再切换为显示状态后pyqt6窗口将如上图那样被其它窗口遮挡。。。通过各种查资料找教程,都是说要设置窗口状态标志,如下面代码,但根据解决不了问题。(注意:这里提到的pyqt窗口或界面不显示在最上层的问题不是置顶问题,因为置顶是将窗口固定在屏幕最上层,而跟我要的明显不是一个)
self.activateWindow() #设置窗口为激活状态 self.setWindowState(self.windowState() & Qt.WindowState.WindowActive)#设置窗口为激活状态 self.raise_() #设置窗口为最上层显示
具体出了什么问题?又怎么解决?
在试过无数的方法都不能解决pyqt界面不显示在最上层的问题后,我也没有放弃,我坚信一定能找到问题,于是我又继续在网上浏览。
终于在网上找解决方案时无意中看到另外一款可以用于python注册全局热键的库“system_hotkey”,了解到它是基本windows win32con API实现,眼看有戏,于是马上安装测试。果真有效!
由于system_hotkey库的代码例子中使用了pyqt的信号 “pyqtSignal”,所以为了验证问题是否是由python热键模块不兼容导致,我又重新测试了keyboard和pynput这两个python快捷键注册库,同样也使用了pyqt的信号 “pyqtSignal”来监听快捷键的动作,得出结果与pyqt的信号 “pyqtSignal”监听无关,主要问题就是出在keyboard和pynput这两个python快捷键注册库上面,具体错误原因我也没有能力找出来,但大概能猜测出这个肯定跟keyboard和pynput这两个python快捷键注册库的底层实现有关。
另外,在system_hotkey注册全局快捷键时发现有不少按键组合无法使用,经过查看system_hotkey原代码发现是作者没有写完善,比如需要浏览ctrl+`组合键(“`”是键盘Esc下面那个按键)就会报错,最后定位到system_hotkey即system_hotkey.py文件,在字典vk_codes中增加'`':win32con.N_TMASK1即可。
下载地址
普通下载
点击直接低速下载,因需宽带成本高速下载需扫码
网盘下载
通过不限速阿里、蓝奏网盘高速下载(部分需要扫码)
站长声明:
1、本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
2、如遇到资源无法下载请 点击报错,我们将尽快纠错。
3、如有侵犯您的版权,请联系我们,我们会尽快处理,并诚恳的向你道歉!
注意:如.zip压缩包无法打开请将后缀修改成.exe或使用其它压缩软件尝试。
热门软件
pyqt5,6之图形界面填坑之注册全局快捷键实现主窗口隐藏显示切换遇到的问题
详细介绍pyqt5、6图形界面开发时通过注册全局快捷键实现主窗口隐藏显示切换的方法及遇到的问题及问题的解决方法。
web开发教程 PHP、MySQL与JavaScript学习手册 第4版 免费PDF电子书下载
《PHP、MySQL与JavaScript学习手册 第4版》是一个适用于PHP及Web开发初学者的入门教材。本书全面深入探讨了PHP和MySQL以及Javascript语言的学习指南,旨在让读者能够轻松上手基础Web应用程序开发和编程技术
PHP从入门到精通(第3版) 免费PDF电子书下载
《php从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用PHP进行网络开发应该掌握的各方面技术。
Python面向对象编程指南 Steven F. Lott(洛特)pdf扫描版免费下载
本书致力于深入讲解Python语言的高级特性,通过丰富、强大的代码示例为读者循序渐进地讲解如何编写高质量的Python代码。本书可谓是成就Python编程高手的必读之选。
PHP+MySQL动态网站开发从入门到精通.pdf
《PHP+MySQL动态网站开发从入门到精通》是张工厂所著的一本详细介绍如何使用PHP和MySQL进行动态网站开发的书籍。本书从入门到精通,适合初、中级Web开发人员阅读。本书不仅介绍了PHP和MySQL的基础知识,还
猜你想看
易语言调用rasdial函数实现宽带连接(附源码下载)
做网络项目经常会用到adsl拨号或拨号VPS来更换ip,每次都必须点击 【宽带连接】一下进行断开和连接。
Python面向对象编程指南 Steven F. Lott(洛特)pdf扫描版免费下载
本书致力于深入讲解Python语言的高级特性,通过丰富、强大的代码示例为读者循序渐进地讲解如何编写高质量的Python代码。本书可谓是成就Python编程高手的必读之选。
ThinkPHP5快速入门PDF电子书免费下载
ThinkPHP V5.0快速入门系列是学习和掌握ThinkPHP5.0不可多得的入门指引教程,针对新手用户由浅入深给出了详尽的使用。 本系列围绕WEB开发和API开发常用的一系列基础功能进行循序渐进的讲解
ThinkPHP教程:6.0快速开发手册(案例版) 中文高清版PDF下载
ThinkPHP6.0快速开发手册(案例版)是一款适用于PHP开发人员的高效开发框架手册,此软件主要以经典案例进行讲解,便于初学者在开发过程中更加简单易懂地入门和上手。以下将详细介绍该软件的主要功能与特色。
PHP从入门到精通(第3版) 免费PDF电子书下载
《php从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用PHP进行网络开发应该掌握的各方面技术。
数据采集不可或缺的技巧:Python3 requests使用代理IP请求网络数据源码分享
本文讲述了如何使用Python爬虫中的代理IP,以及获取代理IP的方法。注意代理IP的稳定性与可用性,并设置合适的参数提高成功率。
PYTHON网络编程 第3版高清PDF电子书免费下载
本书针对想要深入理解使用Python来解决网络相关问题或是构建网络应用程序的技术人员,结合实例讲解了网络协议、网络数据及错误、电子邮件
web开发教程 PHP、MySQL与JavaScript学习手册 第4版 免费PDF电子书下载
《PHP、MySQL与JavaScript学习手册 第4版》是一个适用于PHP及Web开发初学者的入门教材。本书全面深入探讨了PHP和MySQL以及Javascript语言的学习指南,旨在让读者能够轻松上手基础Web应用程序开发和编程技术
文章评论