PyQt5-新手避坑指南(持续更新)

news/2024/7/25 1:42:36/文章来源:https://blog.csdn.net/a1397852386/article/details/138751681

文章目录

  • 一.前言
  • 二.开发环境
  • 三.坑
    • 1.程序没有详细报错就退出了
    • 2.qrc资源文件的使用
    • 3.QLabel文字自动换行
    • 4.图片自适应大小
    • 5.checkbox自定义样式后✓不见了
    • 6.多线程
  • 四.记录


一.前言

本篇博客整理了一些初学者容易犯的错,将会持续更新解决PyQt5开发过程中的一些坑,对新手比较友好,大佬请绕道 /笑哭

二.开发环境

笔者是在Windows11上使用Pycharm配合Python3.8进行开发的,详细开发环境信息如下:

  1. 处理器:AMD Ryzen 7 7735H with Radeon Graphics 3.20 GHz
  2. 系统版本:Windows 11 家庭中文版
  3. 开发工具:PyCharm 2021.3
  4. Python版本:Python3.8
  5. PyQt5版本:PyQt5==5.15.10

三.坑

1.程序没有详细报错就退出了

代码执行时,直接报错Process finished with exit code - 1073740791 (Oxc0000409)然后就退出了。
在这里插入图片描述
按照下图指引打开“Emulate terminal in output console”
在这里插入图片描述
勾选后点击确定或应用
在这里插入图片描述
最新版本在这里插入图片描述

然后再执行代码,就能够看到详细报错信息了
在这里插入图片描述

2.qrc资源文件的使用

我们在设计师或者代码里使用的资源文件都统一地使用qrc管理,qrc是什么呢?

.qrc是一个XML文件,它允许开发者将应用程序所需的图像、样式表、声音文件等各种资源集中管理。
通过将资源文件.qrc加载到PyQt5应用程序中,开发者可以轻松地访问和使用这些资源。
.qrc文件使用XML格式编写,包含一个或多个元素。
每个元素内可以包含多个元素,每个元素指定一个资源的路径和名称。

我们这里有个例子,比如当前项目根目录有个名为logo.png的图片文件,我们想让QLabel显示这张图片,那么我们可以这么操作:

  1. 生成.qrc资源文件
  2. 将qrc通过rcc工具转为.py文件
  3. 在代码里使用资源

resources.qrc
在这里插入图片描述

demo.py
虽然第一步引入代码是灰色,但是不影响使用
在这里插入图片描述
有的同学可能会问,我直接写成**self.setPixmap(QPixmap(“logo.png”))**不也能使用资源么?我们这么写的目的是为了打包方便,当资源用多了就能体现得到。

3.QLabel文字自动换行

这个很好解决,一行代码

label.setWordWrap(True)

4.图片自适应大小

让我们的QLabel随着父控件的大小变化
这个很好解决,一行代码

label.setScaledContents(True)

5.checkbox自定义样式后✓不见了

当我们自定义了QCheckBox之后,发现左侧勾选区域的对号不见了,这通常是我们重写了QCheckBox::indicator::unchecked这很影响我们的ui,其实一张图片即可解决,在此我给出定义样式的qss:

#QCheckBox{color:rgb(44,206,162);font-size:11pt;font-weight:520;}
#QCheckBox::indicator::unchecked{ width: 12px;  height: 12px;  border: 1px solid rgb(44,206,162);background-color:rgb(44,206,162)}
#QCheckBox::indicator::checked{ width: 12px;  height: 12px;image:url(:res/tick.png);border: 1px solid rgb(44,206,162);background-color:rgb(44,206,162)}

这里我们需要一张:res/tick.png图片作为勾选后的样式,图片是用qrc转的。
tick.png下载地址:https://wwt.lanzoul.com/iwu9u1zxiehe

大致效果如下图:
在这里插入图片描述

6.多线程

这个问题对于新手来说可能不会涉及到,但是随着代码量和需求的叠加,难免会遇到这个问题:主线程(UI线程)耗时太久导致整个界面卡顿甚至卡死,在此我提供一种方案,就是多线程,但是多次的重写QThread会徒增代码量,我给出一种方案解决:

class WorkerThread(QThread):calc_finished = pyqtSignal(dict)def __init__(self, task, *arg, **args):super(WorkerThread, self).__init__()self.arg = argself.args = argsself.task = taskdef run(self):result = self.task(self, *self.arg, **self.args)def do_calc(self, **args):data=dict()try:data=xxx()except:traceback.print_exc()self.calc_finished .emit(data)

代码大致思路是创建一个线程类,里面通过定义不同的函数执行耗时操作,当耗时操作执行完毕后,使用“发射信号”的方式,将数据传递回主线程。

四.记录

本文会持续更新,大家点赞不迷路哈~

2024年5月27日更新1-6

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1052146.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

211大学计算机专业不考408,新增的交叉专业却考408!南京农业大学计算机考研考情分析!

南京农业大学信息科技学院可追溯至1981年成立的计算中心和1985年筹建的农业图书情报专业。1987年设立了农业图书情报系,1993 年农业图书情报系更名为信息管理系,本科专业名称也于1999年更名为信息管理与信息系统专业。1994年计算中心开始招收计算机应用专…

YOLOv10来了

B站:啥都会一点的研究生公众号:啥都会一点的研究生 前言 YOLOv10 由清华大学研究人员在 Ultralytics版基础上进行进一步开发,引入了一种新的实时目标检测方法,解决了以前版本 YOLO 在后处理和模型架构方面的不足。通过消除非最大…

英码科技算能系列边缘计算盒子再添新成员!搭载TPU处理器BM1688CV186AH,功耗更低、接口更丰富

在数据呈现指数级增长的今天,越来越多的领域和细分场景对实时、高效的数据处理和分析的需求日益增长,对智能算力的需求也不断增强。为应对新的市场趋势,英码科技凭借自身的硬件研发优势,携手算能相继推出了基于BM1684的边缘计算盒…

探索循环逻辑:for逻辑分支与容器遍历的深度剖析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:for逻辑与循环体的奥秘 二、for逻辑与循环体的结合使用 1. 函数与循环…

数字水印 | 离散余弦变换 DCT 基本原理及 Python 代码实现

目录 1 基本原理2 代码实现3 图像压缩 1 基本原理 参考博客:https://www.cnblogs.com/zxporz/p/16072580.html D C T \mathsf{DCT} DCT 全称为 D i s c r e t e C o s i n e T r a n s f o r m \mathsf{Discrete\ Cosine\ Transform} Discrete Cosine Transfo…

Git远程控制

文章目录 1. 创建仓库1.1 Readme1.2 Issue1.3 Pull request 2. 远程仓库克隆3. 推送远程仓库4. 拉取远程仓库5. 配置Git.gitignore配置别名 使用GitHub可以,采用Gitee也行 1. 创建仓库 1.1 Readme Readme文件相当于这个仓库的说明书,gitee会初始化2两份…

字符串的周期:每一期都有那么几位

【题目描述】 如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例 如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。 输入一个长度不超过80的字符串(不含空格),输出其最小周期。 输入第一行表示有T组数据,后续是T行字符串。输出的每组…

打印机里失败的任务删不掉的解决办法 斑马打印机更新电脑驱动和升级打印机固件 提示ribbon out 并黄状态亮+黄供应闪

强删打印任务 WinR services.msc 停止服务 Print spooler C:\Windows\System32\spool\PRINTERS 清空文件夹下所有文件 详细 要删除打印机里失败的任务,可以按照以下步骤操作: 停止打印服务:您需要停止Windows系统中的“Print Spooler”服…

期货学习笔记-斐波那契学习1

斐波那契数列介绍 斐波那契数列是1、1、2、3、5、8、13、21、34、55、89…据说这是数学家莱昂纳多 斐波那契研究兔子繁殖时发现的一个神奇数列,似乎大自然在按照这个数列进行演化,一个斐波那契数字是由该数列相邻的前两个数字相加得到的 在斐波那契交易…

亚马逊云主管马特·加尔曼面临压力,致力于在人工智能领域赶超竞争对手

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

如果任务过多,队列积压怎么处理?

如果任务过多,队列积压怎么处理? 1、内存队列满了应该怎么办2、问题要治本——发短信导致吞吐量降低的问题不能忽略!!3、多路复用IO模型的核心组件简介1、内存队列满了应该怎么办 如图: 大家可以看到,虽然现在发短信和广告投递,彼此之间的执行效率不受彼此影响,但是请…

架构方案演进

1、架构方案演进 一、架构 1、单体架构 2、垂直化拆分 3、集群负载均衡 4、SOA架构 5、微服务架构 6、服务网格 绿色方块为应用服务,蓝色方块为Sidecar Proxy,应用服务之间通过Sidecar Proxy进行通信,整个服务通信形成蓝色网格连线&#xff…

如何做好服务器数据防泄密

在数字化时代,服务器数据的安全与保密性对于企业而言至关重要。数据泄露不仅可能导致经济损失,还可能损害声誉和客户关系。因此,做好服务器数据防泄露工作显得尤为重要。 首先,加强安全意识是防止数据泄露的首要任务。企业需要认识…

【ArcGIS微课1000例】0112:沿线(面)按距离或百分比生成点

文章目录 一、沿线生成点工具介绍二、线状案例三、面状案例一、沿线生成点工具介绍 位置:工具箱→数据管理工具→采样→沿线生成点 摘要:沿线或面以固定间隔或百分比创建点要素。 用法:输入要素的属性将保留在输出要素类中。向输出要素类添加新字段 ORIG_FID,并设置为输…

统信UOS专业版操作系统如何安装惠普打印机驱动

通用集成驱动安装方法 以惠普P1566激光打印机为例介绍一下,在打印机管理器中选择打印机,手动选择安装驱动,找到品牌:惠普,型号:1566,安装驱动后测试打印;LaserJet Pro P1566 Foomati…

2024甘肃省三支一扶报名流程详细图解

预计报名时间:2024年5月27日9:00至5月31日18:00 2024甘肃省三支一扶报名流程 登录甘肃人力人力资源考试中心,选择网上报名 进入账户登录,首次登录同学请先注册账号。 注册账号,认真填写,仔细核对信息。…

VScode代码片段自动转图标

注:在VScode编辑器中,编辑html、vue等文件时,特定代码片段(token/xxx’等)自动转图标显示,按住“ctrl鼠标左键”还可跳转“https://icones.js.org/collections”,个人感觉干扰代码编写&#xff…

Vue.js - 计算属性与侦听器 【0基础向 Vue 基础学习】

文章目录 计算属性 computedcomputed 的使用方法computed 与 method 的区别计算属性完整写法 watch 侦听器(监视器)简单写法 → 简单类型数据,直接监视完整写法 → 添加额外配置项 计算属性 computed computed 的使用方法 **概念&#xff1…

spring boot3整合邮件服务实现邮件发送功能

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 目录 内容概要 开通服务 依赖引入 配置属性 创建邮件发送工具类 测试 最近发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家…

会声会影2024旗舰版神器,让你的视频秒变大片,小白也能轻松上手

在数字时代,视频已经成为了人们表达自我、记录生活的重要方式。无论是旅行中的美景,还是生活中的点滴瞬间,我们都渴望能够用镜头捕捉下来,并通过精心剪辑,将这些美好的画面永远珍藏。然而,对于大多数人来说…