PySide(PyQt),自定义图标按钮

1、在Qt Designer中新建画面,并放置3个按钮(QPushButton)和一个分组框(QGroupBox)小部件,分别命名为btn_1,

btn_2,btn_3和btnStation。

2、将所有小部件的显示文字内容删除。

3、将按钮的宽高尺寸改为50*50,分组框的宽高尺寸改为90*170,并将按钮拖入分组框。如图:

4、使用画图软件绘制图标,这里是使用的32*32,同一图标存为彩色和灰度两种格式。

下面是其中的一个样例:

放大图:

 

 1:1原图:

 5、回到Qt Designer,点击“编辑资源”按钮

6、 在弹出窗口中点击“新建资源文件”按钮

        新建资源文件,命名为buttons.qrc 

        

         点击“添加前缀”按钮,命名为btn_img

         点击"添加文件“按钮,选择并添加之前创建的图标文件

至此,按钮图标的资源文件创建完毕。

7、为小部件设置图标样式表 :

        其中一个按钮的样式表内容:

QPushButton{image:url(:/btn_img/icon_camera32.png);} /* 常态的样式表*/

QPushButton[activated="true"] { /*激活时的样式表*/

background-color:#9db6f9;

}

QPushButton:disabled{ /*禁用时的样式表*/

image:url(:/btn_img/icon_camera32_gray.png);

}

 这里,给按钮自定义了一个特性:activated,当然也可以把activated换成和增加任何你需要的特性。

分组框的样式表内容:

QGroupBox{

border:2px solid #b6b6b6;

background-color:#e0e0e0;

}

设置完成后的显示:

8、使用uic工具和 RCC工具,将ui文件和图像资源转换成python的脚本文件.py。

工具的教程参见:QT designer的安装+PyUIC 和 PyRCC_qt designer安装-CSDN博客

9、创建应用程序的主脚本,导入ui文件和图像资源并应用:

 这个应用框架是我根据自己的使用习惯和能力范围创建的,你也可以根据自己的实际情况搭建框架。Pyside使用Qt Designer和uic工具的基本框架的demo-CSDN博客

# encoding: utf-8
import os
import sys# 获取当前脚本的目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 将 UIS 文件夹的路径添加到 sys.path 中
uis_dir = os.path.join(current_dir, 'UIS')
sys.path.append(uis_dir)
from UIS import *# 主画面类
class MainWindow(QMainWindow, buttons_demo_ui.Ui_MainWindow):def __init__(self):super().__init__()self.setupUi(self)self.run()  # 初始化self.signal_slot()  # 信号和槽# 初始化def run(self):self.move(0, 0)self.show()  # 显示画面self.btn_station = self.btnStation.children()  # 按钮站# 画面层面的信号和槽def signal_slot(self):# 按钮站的槽函数def buttons_clicked(button):def one_btn_clicked():# 设置各个按钮的显示外观def set_styleSheet():for b in self.btn_station:b.setProperty('activated', False)b.setStyleSheet(b.styleSheet())button.setProperty('activated', True)button.setStyleSheet(button.styleSheet())set_styleSheet()# 每个按钮的功能函数if button == mainWindow.btn_1:passelif button == mainWindow.btn_2:passelif button == mainWindow.btn_3:passreturn one_btn_clicked# 按钮站的信号连接for btn in self.btn_station:btn.clicked.connect(buttons_clicked(btn))class Jobs:@staticmethoddef Job_todo_1():pass@staticmethoddef Job_todo_2():pass# 退出系统前的保存、清理、释放等操作@staticmethoddef before_quit():if ui.windows:for w in ui.windows:w.close()# 项目的定义
class UI(QObject):  # 将项目定义为QObject,用来管理项目级别的信号和变量def __init__(self):super().__init__()self.run()  # 初始化# 项目的初始化def run(self):# 项目层面的信号和槽def signal_slot():pass# 退出系统之前的操作app.aboutToQuit.connect(Jobs.before_quit)signal_slot()# #############################主程序##################################
if __name__ == '__main__':app = QApplication(sys.argv)# 项目的实例化ui = UI()ui.windows = []  # 所有用到的窗口# 初始化画面mainWindow = MainWindow()  # 主画面实例化ui.windows.append(mainWindow)sys.exit(app.exec())

 

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

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

相关文章

Android 源码分析:ViewGroup

文章目录 ViewGroup添加View的两种方式 在布局文件中直接添加View在代码中调用ViewGroup.addView添加View ViewGroup添加View的两种方式 在布局文件中直接添加View 当加载布局文件,创建ViewTree时,向ViewGroup添加View会调用ViewGroup.generateLayoutP…

论文复现:Predictive Control of Networked Multiagent Systems via Cloud Computing

Predictive Control of Networked Multiagent Systems via Cloud Computing论文复现 文章目录 Predictive Control of Networked Multiagent Systems via Cloud Computing论文复现论文摘要系统参数初始化系统模型观测器预测过程控制器设计系统的整体框图仿真结果 论文摘要 翻译…

杰发科技Bootloader(2)—— 基于7840的Keil配置地址

序 在7840的sample代码里面有一个简单的Boot跳转APP的示例 PFlash地址从0开始 DFlash的地址从1000000开始 Boot解析 他的boot地址配置为0 Boot的代码主要是这几行,主要作用就是Flash的跳转 int main(void) {SystemClock_Config();InitDebug();printf("demo…

NSAT-8000与Chroma8000相比,有什么独特优势?

在电源模块的广泛应用推动下,测试效率成为行业关注的焦点。纳米软件响应这一需求,推出了NSAT-8000电源自动测试系统,其0代码操作模式大幅简化了测试流程。那么与Chroma 8000系统相比,有什么不同呢? 一、测试项目搭建 C…

nacos get changed dataId error, code: 403

nacos get changed dataId error, code: 403问题解决 问题出现原因:解决办法:需要在运行项目的配置添加权限账号和密码,重启服务 问题出现原因: 由于nacosserver开启了权限验证,项目启动时出现异常 nacos.core.auth.caching.ena…

数据结构->线性结构->顺序存储->静态链表

一、思路 链表由节点组成。 1、分析需求&#xff0c;画图&#xff1a; 2、定义学生结构体&#xff0c;包含姓名、年龄、性别和下一个学生的指针&#xff1a; #include <stdio.h> #define N 20// 定义性别枚举类型&#xff0c;固定值&#xff0c;不是男就是女 typedef e…

torchscript接口

一、定义 定义script、eager、onnx 模式对比案例生成的模型可以被c调用接口解读 二、实现 定义 可以在高性能环境libtorch&#xff08;C &#xff09;中直接加载&#xff0c;实现模型推理&#xff0c;而无需Pytorch训练框架依赖无需代码&#xff0c;直接加载模型&#xff0c…

国中水务:果汁能救“水”吗?

喝下汇源果汁有什么&#xff08;“功效”&#xff09;&#xff1f;这家公司最有发言权。 今天我们聊聊——国中水务。 最近&#xff0c;国中水务公告称拟通过收购&#xff0c;间接控股北京汇源&#xff0c;即将把“垂涎已久”的汇源收入囊中。 两家的故事得从几年前说起&#…

学习大数据DAY21 Linux基本指令2

目录 思维导图 搜索查看查找类 find 从指定目录查找文件 head 与 tail 查看行 cat 查看内容 more 查看大内容 grep 过滤查找 history 查看已经执行过的历史命令 wc 统计文件 du 查看空间 管道符号 | 配合命令使用 上机练习 4 解压安装类 zip unzip 压缩解压 tar …

木舟0基础学习Java的第二十一天(网络编程,反射)

网络编程 三要素&#xff1a;1.IP地址 2.端口 3.协议 InetAddress互联网协议 (IP) 地址 封装了IP地址的类 用法&#xff1a; public static void main(String[] args){//获取IP地址try {InetAddress iaInetAddress.getByName("www.baidu.com");System.out.println…

git跨库合并

1、背景 A为开发环境的代码仓库&#xff0c;B为生产环境的代码仓库。A和B之间不能通信。开发人员的本地电脑可以和A、B通信。 目的 上线时&#xff0c;需要将A代码合并B代码。 2、实现 2.1 添加远程仓库 2.1.1 代码方式 在B代码仓库中,将A添加为远程仓库。 git remote …

【保姆级教程】油猴脚本的安装使用

目录 前言 一、油猴简介 1. 核心功能 2. 应用场景 3. 安全性与兼容性 4. 社区生态 二、教学开始&#xff08;嫌麻烦直接目录跳转开始学习&#xff09; 1.插件安装&#xff08;以Microsoft Edge浏览器为例&#xff09; 2.获取脚本 3.大展身手 三、扩展&#xff08;脚…

2024年7月23日(samba DNS)

​ 回顾 1、关闭防火墙&#xff0c;关闭selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 2、修改静态IP地址 vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改uuid的目的是为了保证网络的唯一性 3、重启网络服务 systemctl restart netwo…

Ansible的脚本-----playbook剧本【上】

目录 1.playbook剧本组成 2.playbook剧本实战演练 2.1 实战演练一&#xff1a;给被管理主机安装httpd服务 2.2 实战演练二&#xff1a;定义、引用变量 2.3 实战演练三&#xff1a;指定远程主机sudo切换用户 2.4 实战演练四&#xff1a;when条件判断 2.5 实战演练五&…

【Matlab 传感器布局优化】基于群智能算法的wsn覆盖优化研究

一 背景介绍 无线传感器网络&#xff08;Wireless Sensor Network, WSN&#xff09;作为远程环境监测系统应用的关键技术&#xff0c;能够在有限的能源供应下提供高效的传感和通信服务。覆盖控制是保证高效通信和可靠数据传输的重要手段。鉴于复杂的物理环境限制了节点部署方式…

昇思MindSpore 应用学习-基于MobileNetv2的垃圾分类

基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写&#xff08;Python语言&#xff09;&…

文本编辑三巨头(grep)

目录 正则表达式 元字符 grep 案例 我在编写脚本的时候发现&#xff0c;三个文本编辑的命令&#xff08;grep、sed、awk&#xff0c;被称为文本编辑三剑客&#xff0c;我习惯叫它三巨头&#xff09;用的还挺多的&#xff0c;说实话我一开始学的时候也有些懵&#xff0c;主要…

Unity3D之TCP网络通信(客户端)

文章目录 概述TCP核心类异步机制 Unity中创建TCP客户端Unity中其它脚本获取TCP客户端接受到的数据后续改进 本文将以Unity3D应用项目作为客户端去连接制定的服务器为例进行相关说明。 Unity官网参考资料&#xff1a; https://developer.unity.cn/projects/6572ea1bedbc2a001ef…

AWS 国内 配置docker环境并安装相关应用

无论系统中是否有Docker&#xff0c;我们需要先卸载老版本&#xff0c;我们需要安装新版本CE&#xff0c;其实我们应该知道Docker有分CE社区版本和EE企业版&#xff0c;后者是需要付费的&#xff0c;我们安装CE免费版本。 yum remove docker docker-client docker-client-late…

mysql 如何修改JSON字段中的一部分参数值

在 MySQL 中修改 JSON 对象中的一部分值可以使用一些内置的 JSON 函数来实现。假设你有一个包含 JSON 数据的列&#xff0c;你可以使用 JSON_SET() 函数来更新其中的某个字段。 假设你有一个表 my_table&#xff0c;其中有一个 json_column 列包含 JSON 数据&#xff0c;示例数…