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

文章目录

  • 一.前言
  • 二.开发环境
  • 三.坑
    • 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.mzph.cn/pingmian/16889.shtml

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

相关文章

技术贴 | Query 物理计划构建指南

在往期博客《执行器 - Query 执行详解》中,我们介绍到到一条 Query 的 SQL 语句需要经过:词法分析 —— 生成 AST 语法树 —— 生成物理计划。本期博客我们接续上篇讲解一条 Query 语句物理计划的具体结构,以及如何构建物理计划。 物理计划是…

Jmeter环境安装(超级简单)

Jmeter的安装是非常简单的,只需要将下载的安装包解压后,就可以运行了!! 一、首先要下载Jmeter 1.1、官网下载: 下载最新版:https://jmeter.apache.org/download_jmeter.cgi https://jmeter.apache.org/…

论文阅读》学习了解自己:一个粗略到精细的个性化对话生成的人物感知训练框架 AAAI 2023

《论文阅读》学习了解自己:一个粗略到精细的个性化对话生成的人物感知训练框架 AAAI 2023 前言 简介研究现状任务定义模型架构Learning to know myselfLearning to avoid Misidentification损失函数实验结果消融实验 前言 亲身阅读感受分享,细节画图解释…

代码随想录算法训练营第四十一天 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 代码随想录 视频:从此再也不怕动态规划了,动态规划解题方法论大曝光 !| 理论基础 |力扣刷题总结| 动态规划入门_哔哩哔哩_bilibili 动归五部曲 1.dp数组以及下标的含义 2.递推公式 3.dp数组如何初始化 4.遍历顺序(例如先背包再…

一个程序员的牢狱生涯(40)好事

星期一 好 事 小X州脸上的掌印是谁留下的? 我想起我们排队去小卖铺的时候,号子里有几个人没有出去。头铺应该不会动手的,老汉整天闷着不说话,也不会是他,那就只剩下了大镣!不过小X州这小子也是该他挨打,刚惹了大镣不说,在大家都去小卖铺的时候他还没去,这不是自己上赶…

java_方法重写(覆盖)

介绍 现在我们来试一下 代码 父类 package b;public class father_ {//father class//4attributepublic void cry() {System.out.println("小动物叫唤");} } package b; 子类 public class graduate extends father_ {public void cry() {//子类方法//非私有的属性和…

数据访问层设计_4.灵活运用XML Schema

1.XML Schema XML Schema用来描述XML文档合法结构、内容和限制。XML Schema由XML1.0自描述,并且使用了命名空间,有丰富的内嵌数据类型及其强大的数据结构定义功能,充分地改造了并且极大地扩展了DTDs(传统描述XML文档结构和内容限…

算法训练营第四十一天 | LeetCode 509 斐波那契数列、LeetCode 70 爬楼梯、LeetCode 746 使用最小花费爬楼梯

LeetCode 509 斐波那契数列 这题动规五部曲都定义得比较明确。首先是dp数组下标,题目中给定F(0) 0说明从0开始,dp[i]直接表示F(i)的值即可。递推公式也直接给出了,也给了开头两个作为递推基础的数值作为初始化依据。遍历顺序也指明是从前往…

有哪些和excel类似或基于excel扩展的软件?

Workfine数字化管理平台是一款易上手、便捷、高效的数字化管理工具,是类excel设计,更容易上手进行企业业务系统的搭建,在信息记录和表格管理方面,比excel更简单易用,在这里,给大家挑几个点展示下~ 首先表格…

oracle碎片整理

1、move碎片整理 1) DECLARE tmp_val VARCHAR2 (500); BEGIN FOR REC IN (SELECT TABLE_NAME FROM USER_TABLES ) LOOP tmp_val:=ALTER TABLE || REC.TABLE_NAME || MOVE; BEGIN EXECUTE IMMEDIATE tmp_val; DBMS_OUTPUT.ENABLE(buffer_size => null); DBMS_OUTPUT.put_l…

一键恢复,U盘被删除文件方法分享

U盘是一种轻巧便携的移动储存工具,在日常的工作以及学习过程中,我们经常性会使用它来传输、备份、存储一些重要文件。然而,随着后期使用频率的增多,会在不同的设备上来回插拔,也就给里面存储文件带来了很大的隐患。比方…

I.MX6ULL的蜂鸣器实验-GPIO输出实验

系列文章目录 I.MX6ULL的蜂鸣器实验 I.MX6ULL的蜂鸣器实验 系列文章目录一、前言二、有源蜂鸣器简介三、硬件原理分析四、程序编写4.1程序编写前提工作4.2程序编写 五、编译下载验证5.1编写 Makefile 和链接脚本5.2编译下载 一、前言 在 I.MX6U-ALPHA 开发板上有一个有源蜂鸣器…

九宫格转圈圈抽奖活动,有加速,减速效果

在线访问demo和代码在底部 代码&#xff0c;复制就可以跑 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…

SpringBootTest测试框架五

示例 package com.xxx;import com.xxx.ut.AbstractBasicTest; import com.xxx.ut.uttool.TestModel; import

Hive操作

–默认路径/user/hive/warehouse. 建数据库不可以指定路径 create database ods_housesys_db; 在ods_housesys_db中建表&#xff0c;指定表路径/user/hdpu/ods_housesys_db/ods_broker。 会自动创建ods_housesys_db/ods_broker两级路径。但是hdpu需要自己创建。 执行语句时要…

强化学习中model-free和model-based

强化学习中model-free和model-based 1.Model-Based 强化学习算法2.Model-Free 强化学习算法3.对比总结 在强化学习&#xff08;Reinforcement Learning, RL&#xff09;中&#xff0c;算法通常分为两大类&#xff1a;model-based 和 model-free。它们的主要区别在于是否显式地构…

Thingsboard规则链:GPS Geofencing Filter节点详解

​​​​​​​ 引言 GPS Geofencing Filter节点具体作用 使用教程 源码浅析 应用场景与案例 物流与运输 农业智能化 城市安全管理 结语 引言 在物联网技术迅速发展的今天&#xff0c;精准的位置服务已成为诸多应用不可或缺的一环。作为物联网平台的佼佼者&…

Python应用开发——30天学习Streamlit Python包进行APP的构建(2)

🗓️ 天 14 Streamlit 组件s Streamlit 组件s 是第三方的 Python 模块,对 Streamlit 进行拓展 [1]. 有哪些可用的 Streamlit 组件s? 好几十个精选 Streamlit 组件s 罗列在 Streamlit 的网站上 [2]. Fanilo(一位 Streamlit 创作者)在 wiki 帖子中组织了一个很棒的 St…

【机器学习】随机梯度下降算法以及优化

一、概述&#xff1a; 什么是梯度下降&#xff1f; 梯度下降法的基本思想可以类比为一个下山的过程。 假设这样一个场景:一个人被困在山上&#xff0c;需要从山上下来(i.e.找到山的最低点&#xff0c;也就是山谷)。但此时山上 的浓雾很大&#xff0c;导致可视度很低。因此&am…

【Postman接口测试】第一节.接口测试基础认识

文章目录 前言一、接口的基础 1.1 什么是接口 1.2 软件为什么需要接口 1.3 为什么要做接口测试二、接口测试的基础 2.1 接口测试介绍 2.2 接口测试的实现方式三、接口返回数据和JSON详解四、接口测试协议详解总结 前言 一、接口的基础知识 1.1 什么是…