pyside6自定义部件库和软件框架的建设记录

2024-04-14 06:36

本文主要是介绍pyside6自定义部件库和软件框架的建设记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自定义的部件库原则上尽量做到前后端分离,接口方便,复制简单。

单选框部件

# encoding: utf-8
###################################################
#               自定义的单选框
#################################################### 对外接口:
# stateNum = Signal(int)  状态号,从1开始,是几就几被选中
# customSetup():   # 定制的初始化程序import PySide6
from PySide6.QtCore import Signal
from PySide6.QtWidgets import QWidget, QGroupBox, QFrameclass PysideCustomRadiobutton(QFrame):stateNum = Signal(int)    # 状态号,从1开始,是几就几被选中def __init__(self, parent=None):super().__init__(parent)self.RadioButtons = []def customSetupUi(self):   # 定制的初始化程序self.RadioButtons = self.findChildren(PySide6.QtWidgets.QRadioButton)   # 部件中所有的单选按钮self.RadioButtons.sort(key=lambda child: child.objectName())    # 按名称排序for i in range(len(self.RadioButtons)):def callback(idx):return lambda: self.stateNum.emit(idx+1)self.RadioButtons[i].clicked.connect(callback(i))     # 单击按钮后发射信号self.stateNum.connect(self.changeState)                   # 状态号信号的连接self.stateNum.emit(1)                                     # 初始化状态下,状态1被选中def changeState(self, thisTurnOn):    # 改变状态self.RadioButtons[thisTurnOn-1].setChecked(True)

前端的范例: 

框架的建立和调用

# 阶段v1的调用
import sys
from time import strftimefrom PySide6.QtCore import QObject, Signal, QTimer
from PySide6.QtWidgets import QWidget, QApplication, QMainWindow
import template_rc  # 导入需要显示的画面# ############导入并需要显示的画面集中在这里定义#############################
# ############template.ui的显示#############################
class MainWindow(QMainWindow, template_rc.Ui_MainWindow):  # 定义需要显示的画面类def __int__(self):super().__init__()# ########################部件初始化的通用函数###################################
def init_widgets(widget):  # 画面里的部件的初始化sons = widget.children()  # 儿辈部件def find_child(child):  # 查找子部件try:child.customSetupUi()  # 自定义的初始化except AttributeError:passif child.children():for grandson in child.children():find_child(grandson)  # 递归查找for son in sons:find_child(son)# #############################主程序###################################
if __name__ == '__main__':app = QApplication(sys.argv)# #######################本项目的定义###################################class UI(QObject):# ##########项目范围内的信号#############sysClock_1S = Signal()  # 秒时钟信号# ##########定时器#############timer_1s = QTimer()  # 定义全局0.1s的周期定时器timer_1s.start(1000)# ###########__init__###############def __init__(self):super().__init__()self.widgets = []  # 所有的视窗列表# ########################本项目的实例化###################################ui = UI()# #######################画面实例化和初始化################################## ########################实例化模板画面#################################mainWindow = MainWindow()mainWindow.setupUi(mainWindow)  # 模板画面的本体初始化init_widgets(mainWindow)  # 模板画面的部件初始化mainWindow.show()ui.widgets.append(mainWindow)  # 将画面加入视窗列表,方便管理# ###########################信号的连接##################################### ###########################项目级别信号的连接###############################ui.timer_1s.timeout.connect(ui.sysClock_1S.emit)ui.sysClock_1S.connect(lambda: mainWindow.labelSystemClock.setText(strftime('%Y-%m-%d %H:%M:%S')))# ###########################mainWindow画面信号的连接######################mainWindow.RadioButtons_1.stateNum.connect(lambda x: mainWindow.label_1.setText(str(x)))mainWindow.pushButton_1.clicked.connect(lambda: mainWindow.RadioButtons_1.stateNum.emit(1))mainWindow.doubleSpinBox_1.valueChanged.connect(lambda x: mainWindow.label_22.setText(str(x)))# ###########################槽函数####################################sys.exit(app.exec())

运行截图:

本阶段的资源链接:https://download.csdn.net/download/xulibo5828/89120987?spm=1001.2101.3001.9499

自定义功能的仪表盘

        一个具有设定值输入、微调,实时值显示,历史曲线实时显示的仪表盘。

        在CAD软件中大致规划一下功能区的尺寸和排列:

         功能和分工规划:编程阶段可视的部件在QT designer中完成部署和设置,运行阶段可视的动态部件在程序中根据QT designer中的设置值自动计算和部署。

        对外接口:设定值、实时值。

        前端设计(待续

 

这篇关于pyside6自定义部件库和软件框架的建设记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902327

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT