我用PYQT5做的第一个实用的上位机项目(二)

news2024/10/6 12:35:36

从这篇开始,复盘整个的过程,做一个记录。

首先,制作一些自定义的常用部件,原生的部件很粗糙。

一、按钮的图片资源:用绘图软件(例如AI、coreldraw、PS等,看自己的熟悉程度)制作按钮的图标,我是用的大雄CAD,做出来线条之后导出PNG到PS去进一步编辑。说个题外话,大雄CAD是一个免费的CAD软件,有很多年历史了,我记得应该是西工大一个叫廖达雄的教授搞的,无基础零秒上手,对于搞电气的只需要简单画画机械图的特别适用。

以“用户”图标为例,在大雄CAD中,画4个圆,直径为3和5,线粗为0.4,线色RGB(230,230,230)

 画截断线,并在图线上右键边界修改按钮 ,把图线截断并删除多余的线。

之后文件--导出,将其导出为PNG。

 PHOTOSHOP打开导出的图片,图像--画布大小,将图像尺寸调整为50*200; 

复制背景图层;

在背景副本图层的白色空白处点魔棒(容差1), 按delete键删除白色区域,然后ctrl+a全选,将图像移到最左边。得到一个背景色透明的图像:

 删除背景图层,保存PNG格式的图片。

用类似的方法做出别的按钮图标。

打开Qt Designer,新建Main Window,命名为form0 。

form0空白处右键--改变样式表--添加颜色--background color,设置背景色:

并将form0的尺寸设置为1920*1080

 点击资源管理器的铅笔图标,新建资源文件:buttons.qrc

"添加前缀“、”添加文件“ 

 将做好的按钮图标文件添加

 拖动label图标,新建Qlabel

 新建的Qlabel命名为btn_exit,尺寸220*65,字体黑体18 。

刚刚新建的btn_exit,右键--编辑样式表,输入以下内容:

background-color:#4b5075;

border:2px solid rgb(43, 78, 140);

border-radius:8px;

color:#e6e6e6;

得到一个自定义样式的按钮:按钮的文字要加几个空格,为图标留出位置。

btn_exit,再次右键--编辑样式表,添加资源--image,选择"退出.png"

 得到了如下按钮:

同样方法做出其余的按钮:

二、将图片资源转成py文件 :

打开Pycharm,利用外部工具PyRcc,将按钮的图片资源转化成python文件。

 另一篇按钮制作的链接,会有额外的具体方法:用Qlabel制作的自定义带图片的按钮-CSDN博客

至此就制作了一个带自定义图片按钮的画面。建立一个基本的程序框架,并运行显示:

 代码:

from sys import exit, argv
from PyQt5.QtCore import Qt, QCoreApplication
from PyQt5.QtWidgets import QApplication
from PyQt5 import uic
import buttons  # 按钮的内嵌图片资源

QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)    # 解决显示比例不同时的部件变形问题


############################################
# 画面的类,每个画面对应一个同名的首字母大写的类  #
class Form0:  # 画面form0的类(form0是主窗口)
    @staticmethod
    def init():  # 界面的初始化,定义画面的属性,比如几何特性、部件初始状态等
        form0.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)  # 关掉边框,始终最前


if __name__ == '__main__':
    app = QApplication(argv)

    ############################################
    #           所有画面的定义              #
    forms = []  # 所有画面的集合,方便管理
    form0 = uic.loadUi('../UIS/form0.ui')  # 生成并加载画面,form0是主画面
    forms.append(form0)
    Form0.init()  # 主画面的初始化
    form0.show()    # 主画面显示

    exit(app.exec_())

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

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

相关文章

泰国数字加密平台Bitkub创始人到访和数集团:以数字化创新探索科技前沿密码

9月21日,泰国数字加密货币交易平台Bitkub创始人兼首席执行官(CEO)Jirayut Srupsrisopa (Topp)先生到访上海和数集团,在和数集团董事长唐毅陪同下实地参观了和数集团上海总部,听取了和数集团在引领前沿数字化创新&#…

怒刷LeetCode的第18天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:置换 方法二:哈希集合 方法三:递归 第二题 题目来源 题目内容 解决方法 方法一:双指针法 方法二:动态规划 方法三:栈 方法四:两…

数字乡村包括哪些方面?数字乡村应用介绍

数字乡村是指利用物联网、数字化和智能化技术,借助现代数字智能产品、高效信息服务和物联网基础设施,以提高农村居民生活质量,助力拓展经济发展前景。 创建数字村庄有助于缩小城乡社区之间的差距,保障每个人都能平等地享受科技发展…

LabVIEW开发低成本静脉监测和控制输液系统

LabVIEW开发低成本静脉监测和控制输液系统 信息技术的使用和进步彻底改变了现代医疗保健的面貌。医院、疗养院和其他姑息治疗院需要不同的人力资源,如医生、技术人员、护士和其他工作人员,他们共同提供最先进的医疗保健。COVID-19大流行表现出严重缺乏此…

安全厂商安恒信息加入龙蜥社区,完成 与 Anolis OS 兼容适配

近日,杭州安恒信息技术股份有限公司(以下简称“安恒信息”)签署了 CLA(Contributor License Agreement,贡献者许可协议),正式加入龙蜥社区(OpenAnolis),并成为…

2023-9-27 JZ77 按之字型顺序打印二叉树

题目链接:按之字型顺序打印二叉树 import java.util.*;/** public class TreeNode {* int val 0;* TreeNode left null;* TreeNode right null;* public TreeNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、方…

阿里云服务器企业级独享和共享型有什么区别?

阿里云ECS云服务器共享型和企业级有什么区别?企业级就是独享型,共享型和企业级云的主要区别CPU调度模式,共享型是非绑定CPU调度模式,企业级是固定CPU调度模式,共享型云服务器在高负载时计算性能可能出现波动不稳定&…

恋爱聊天追女神沟通话术小程序开发演示

现在什么最有市场?婚恋、交友、恋爱…… 单身多需求就自然而然的产生了,而且还很大。我们可以搜素查看各平台这类项目的流量,基本都不低。 因此针对细分领域开发两款恋爱聊天沟通话术小程序,一款为本地数据版,一款为…

携手华为使能全场景创新,夯实算力底座,麒麟信安受邀参加华为全联接大会2023

智能化浪潮正奔腾而来,驱动千行百业锚定新航向、跑出加速度。日前,第八届华为全联接大会(HUAWEI CONNECT 2023)在上海举办。大会邀请思想领袖、商业精英、技术专家、合作伙伴、开发者等业界同仁,从商业、产业、生态等方…

设计模式1、单例模式 Singleton

解释说明:确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例 要点如下 有且仅有一个实例 必须自行创建自己的唯一实例 必须给所有其他对象提供这一实例 具体实现要点如下 提供一个 private 构造函数(防止外部调用而构造类的实例…

还在用 !=null 判空?让我们用Java8的全新API去优化代码吧

当我们编写Java代码时,经常需要处理空值(null),因为空值可能导致NullPointerException异常,这是一个常见的运行时异常。在Java 8中,引入了Optional类来更优雅地处理可能为空的值,从而减少NullPo…

NOSQL Redis十大数据类型

String 字符串 string 是redis最基本的类型,而是使用最多的数据类型, 一个 key 对应一个 value string 类型是 二进制安全的,意思reidis 的string 可以包含任何数据(任何数据都可以转换binary的),比如jpg图…

推荐一个好用的电商开源项目yudao源码

1、项目下载cloneruoyi-vue-pro: 🔥 官方推荐 🔥 RuoYi-Vue 全新 Pro 版本,优化重构所有功能。基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管理系统 微信小程序,支持 RBAC 动态权限、数据权限、SaaS 多租户、…

使用日志分析工具了解网络情况

日志分析(或日志文件分析)是检查整个网络中生成的日志数据的过程,日志数据从各种来源生成,包括外围设备、工作站、服务器、应用程序以及其他硬件和软件组件,将它们收集到一个中心位置并进行分析,可以为了解…

提升工作效率的一些网站、应用、插件和小技巧(二)

前言 距离发布提升工作效率的一些网站、应用、插件和小技巧(一)已经过去了三年,这次再分享一下这三年里新 Get 到的一些工作、技巧,欢迎各位在评论区也分享一下自己使用的工具软件等,也希望下一个三年我还能继续坚持分…

蓝桥杯每日一题2023.9.28

AcWing 4409. 砍竹子 - AcWing 题目描述 题目分析 注:sqrtl的范围为long double,比sqrt更加精确 使用优先队列维护一段区间,如果连续一段相同就合并为一个区间,从大到小去枚举,每次先取出最大的一段,双…

MySQL到TiDB:Hive Metastore横向扩展之路

作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方面对比数据择优选择TiDB方案。其次分享了整…

首批48所高校大模型开课“尝鲜”,AI教学赋能计划合作名单公布

为适应大模型时代快速迭代的人才需求,百度飞桨全新发布《AI教学赋能计划(大模型特辑)》,提供文心大模型、飞桨AI Studio星河社区、大模型课程资源、师资培训、高校竞赛等体系化支持,支持高校顺应时代潮流、共启大模型人…

LeetCode算法二叉树—116. 填充每个节点的下一个右侧节点指针

目录 116. 填充每个节点的下一个右侧节点指针 题解: 代码: 运行结果: 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;N…

爬虫抓取数据时显示超时,是爬虫IP质量问题?

当我们进行网络爬虫开发时,有时会遇到抓取数据时出现超时的情况。这可能是由于目标网站对频繁请求做了限制,或者是由于网络环境不稳定造成的。其中,爬虫IP的质量也是导致超时的一个重要因素。本文将探讨抓取数据时出现超时的原因,…