pyQT生成界面,更改后不清除自定义代码的方法

news2024/11/27 21:07:47

基本原理就是作个子类继承生成的界面,在子类里写代码

工程结构

dialog_ui.py 界面子类

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QStandardItemModel, QStandardItem, QColor, QFont
from PyQt5.QtCore import Qt
import Ui_dialog
import sys

class myDialog(Ui_dialog.Ui_Dialog):#继承自UI_Diglog类,注意我把UI_Dialog放在了untitled.py中,如果你把这个类放在了XXX.py文件中,就应该是XXX.UI_Dialog
    def __init__(self,Dialog):
        super().setupUi(Dialog)#调用父类的setupUI函数
        self.pushButton.clicked.connect(self.helloworld)#将按钮点击事件和helloworld函数绑定
        model = QStandardItemModel(5, 7)
        # 设置水平表头标签
        model.setHorizontalHeaderLabels(['设置值', '板卡1', '板卡2', '板卡3', '板卡4', '板卡5', '板卡6'])
        model.setVerticalHeaderLabels(['电压', '电流', '功率'])
        # 填充表格数据
        for row in range(5):  # 遍历行
            for column in range(7):  # 遍历列
                # 创建一个QStandardItem对象,表示单元格内容
                item = QStandardItem('Item {row}, {column}')
                # 将单元格内容添加到模型的指定位置
                model.setItem(row, column, item)
        self.tableView.setModel(model) 
 
    def helloworld(self):#label上显示文字hello world
        self.label.setText("hello world")
        
    
 
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = myDialog(MainWindow)#注意把类名修改为myDialog
    #ui.setupUi(MainWindow)  myDialog类的构造函数已经调用了这个函数,这行代码可以删去
    MainWindow.show()
    sys.exit(app.exec_())

界面及转换后的界面代码Ui_dialog.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(800, 600)
        self.frame = QtWidgets.QFrame(Dialog)
        self.frame.setGeometry(QtCore.QRect(10, 60, 781, 531))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
        self.frame.setSizePolicy(sizePolicy)
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.tableView = QtWidgets.QTableView(self.frame)
        self.tableView.setGeometry(QtCore.QRect(0, 0, 781, 531))
        self.tableView.setObjectName("tableView")
        self.layoutWidget = QtWidgets.QWidget(Dialog)
        self.layoutWidget.setGeometry(QtCore.QRect(50, 20, 701, 26))
        self.layoutWidget.setObjectName("layoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.checkBox = QtWidgets.QCheckBox(self.layoutWidget)
        self.checkBox.setObjectName("checkBox")
        self.horizontalLayout.addWidget(self.checkBox, 0, QtCore.Qt.AlignHCenter)
        self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.label = QtWidgets.QLabel(self.layoutWidget)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)
        self.label_2 = QtWidgets.QLabel(self.layoutWidget)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout.addWidget(self.label_2)

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "功率分析仪调试工具"))
        self.pushButton.setText(_translate("Dialog", "启动调试"))
        self.checkBox.setText(_translate("Dialog", "滤波"))
        self.pushButton_2.setText(_translate("Dialog", "输入源配置"))
        self.label.setText(_translate("Dialog", "model: fluk1123 on line"))
        self.pushButton_3.setText(_translate("Dialog", "调试板卡配置"))
        self.label_2.setText(_translate("Dialog", "sn:12345678"))

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

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

相关文章

带隙基准Bandgap电路学习(一)

一、原理图 Bandgap中的运放(折叠式Cascode)采用P输入对,是因为运放输入端接的PNP三极管发射极端的电位,电压小,为了确保输入对管能够饱和工作,故采用P输入对管。此外,P管作为输入管&#xff0c…

UE5.3.2查看引擎真正版本

编译好的插件给别人用,发现引擎不一致,而且双方都是5.3.2版本引擎 打开Help->About Unreal Editor可以看到引擎版本 或者直接查看引擎版本文件:XXXXX\Engine\Build\Build.version 里面能看到对应的分支名字

【AIGC】OpenAI Canvas发布,代码能力秒杀Copilot,360°碾压Claude

目录 在Canvas界面中,你可以:Canvas有哪些强大功能?写作助手的升级编程功能的提升 网友反响如何?[如何直接使用ChatGPT4o、o1、OpenAI Canvas](https://www.nezhasoft.cn/) 10月3日凌晨1点、太平洋时间的上午 10 点,Op…

RK3568平台(平台总线篇)IIC光感BH1721模块调试

一.BH1721硬件信息 总上,读取数据全过程为: 通过查看数据手册得知BH1721的设备地址为0x23,光感并不是直接去读取设备地址上某个寄存器的地址,而是通过向0x23直接写入数据0x01 0x10后直接读取光感值。 第一步:通过I2C总线,主机给bh1721设备发送数据:0x01 ——> (Pow…

PyQt5 布局管理、事件、信号以及对话框

布局管理 绝对定位 每个程序都是以像素为单位区分元素的位置,衡量元素的⼤⼩。所以我们完全可以使⽤绝对定位搞定每个元素和窗⼜的位置。 局限性: 元素不会随着我们更改窗⼜的位置和⼤⼩⽽变化不能适⽤于不同的平台和不同分辨率的显⽰器更改应⽤字体…

老板的“神助攻”:公司电脑监控软件

在当今的商业世界中,企业管理者都希望员工能全身心投入工作,为企业创造更多价值。然而,员工上班摸鱼的现象却让许多老板头疼不已。公司电脑监控软件的出现,为解决这一问题提供了可能。接下来,我们将详细介绍几款优质的…

新160个crackme - 079-DueList.5

运行分析 提示需要注册 PE分析 32位程序,PE Diminisher壳 手动脱壳 x32dbg打开程序,按一下F8,根据ESP定律,在此处下断点按一下F9,两下F8,来到OEP处00401000打开Scylla,点击转储保存文件点击IAT自…

深入理解Dubbo源码核心原理-Part3

到此开始讲解Dubbo消费端的源码 在消费一端,需要关注两件事情。第一,接口的proxy如何生成。第二,请求如何发送。 首先看到启动类 接下来看真正inject方法 现在需要思考,待注入的Bean从哪儿来,这个Bean必然注入的是一…

Basic penetration_1靶机渗透

项目地址 plain https://download.vulnhub.com/basicpentesting/basic_pentesting_1.ova 实验过程 开启靶机虚拟机 ![](https://img-blog.csdnimg.cn/img_convert/4135d3c176bdca1f661f756b8321c97a.png) 使用nmap进行主机发现,获取靶机IP地址 plain nmap 192.1…

如何删除不需要的右键菜单

比如要删除以下右键菜单: 1. 打开“命令提示符”,并输入“regedit”以打开注册表编辑器。或使用快捷键“WinR”打开“运行”窗口,输入“regedit”以打开注册表编辑器。 2. 在注册表编辑器中,找到路径“计算机HKEY_CLASSES_ROOT/Di…

IterComp: 从模型图库中迭代合成感知反馈学习,用于文本到图像的生成

我们从多个模型中收集组成感知模型偏好,并采用迭代反馈学习方法,使基础扩散模型和奖励模型都能逐步自我完善。 我们提出了一种迭代反馈学习方法,通过多次迭代,使基础扩散模型和奖励模型逐步自我完善,从而以闭环方式增…

智能化叉车作业安全高效监控管理系统方案

在物流作业中,智能叉车管理系统的引入,不仅极大地提升了作业效率,还显著增强了作业安全性,为物流行业的现代化转型注入了强劲动力。 1、产品简介 2023A智能叉车管理系统是用于工业车辆安全监控管理的车载终端,具有快…

1.4 使用Vite创建Vue 3项目

文章目录 什么是 ViteVite 的优点注意事项 创建 Vue 3 项目手动创建项目通过模板自动创建项目启动项目 Vue 3 项目目录结构Vue 3 项目运行过程项目运行过程项目关键文件 大家好,今天我们将一起学习如何使用 Vite 创建一个 Vue 3 项目。Vite 是一个现代的前端构建工具…

使用差分来测试开关模式电源

在从墙壁插座到被供电设备的过程中,电力通常通过开关模式电源,其中交流信号在到达设备之前被整流为直流。之后,直流信号(通常为 5 V)被传递到设备 PC 板上的 DC-DC 转换器,以将各种电压馈送到设备供电网络的…

2021年华为杯数学建模竞赛B题论文和代码

空气质量预报二次建模 尽管目前已有WRF-CMAQ模拟体系对空气质量进行预报,但由于部分污染物生成机理不完全明晰以及排放清单不确定等因素,空气质量的预报结果并不理想。因此,在WRF-CMAQ 模型一次预报的基础上进行更加准确的二次预报对提前获知…

MySQL-02.概述-安装配置

一.MySQL的安装 网址:MySQL :: Download MySQL Community Server 二.解压 三.配置 四.初始化MySQL 五.注册MySQL服务 六.启动MySQL服务 七.修改默认账户密码 八.登录MySQL 如果不想显示密码,安全访问,那么就不要输入密码,-p…

英特尔新旗舰 CPU 将运行更凉爽、更高效,适合 PC 游戏

英特尔终于解决了台式机 CPU 发热和耗电的问题。英特尔的新旗舰 Core Ultra 200S 系列处理器将于 10 月 24 日上市,该系列专注于每瓦性能,比之前的第 14 代芯片运行更凉爽、更高效。这些代号为 Arrow Lake S 的处理器也是英特尔首款内置 NPU(…

好玩的大数据之05:MySQL安装方法一(下载文件安装,mysql-server_8.0.21)

一、简介 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 二、下载 下载地址:https://www.mysql.com/ 选MySQL Community download…

图片怎么修改成圆角?5分钟将图片改成圆角方法

图片怎么修改成圆角?在数字化时代,图片已成为我们传递信息和表达创意的重要媒介。无论是社交媒体上的分享,还是专业设计中的应用,一张美观的图片总能迅速吸引人们的注意。为了进一步提升图片的视觉吸引力,让其在众多内…

Java通过RAG构建专属知识问答机器人_超详细

RAG:融合检索与生成的文本精准生成技术 检索增强生成(RAG)是一种技术,它通过结合检索模型和生成模型来提高文本生成的准确性。具体来说,RAG首先利用检索模型从私有或专有的数据源中搜索相关信息,然后将这些…