PyQt实战 创建一个PyQt5项目

前后端分离

参考链接

PyQt5实战(二):创建一个PyQt5项目_pyqt5实战项目_笨鸟未必先飞的博客-CSDN博客

项目目录

创建一个QT项目

调用pyuic工具将dialog.ui文件编译为Python程序文件ui_dialog.py。

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'dialog.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Dialog(object):def setupUi(self, Dialog):Dialog.setObjectName("Dialog")Dialog.resize(400, 310)self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))self.buttonBox.setOrientation(QtCore.Qt.Horizontal)self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)self.buttonBox.setObjectName("buttonBox")self.retranslateUi(Dialog)self.buttonBox.accepted.connect(Dialog.accept) # type: ignoreself.buttonBox.rejected.connect(Dialog.reject) # type: ignoreQtCore.QMetaObject.connectSlotsByName(Dialog)def retranslateUi(self, Dialog):_translate = QtCore.QCoreApplication.translateDialog.setWindowTitle(_translate("Dialog", "Dialog"))

创建myDialog.py文件

创建一个myDialog.py文件,包含对窗体进行业务操作的类。

在该文件中创建一个与QT中生成的槽函数名称同名的一个方法:on_btn_train_clicked(self)。

from PyQt5.QtWidgets import QDialogfrom ui_Dialog import Ui_Dialogclass QMyDialog(QDialog):def __init__(self,parent=None):super().__init__(parent)self.ui = Ui_Dialog()    #创建UI对象self.ui.setupUi(self)  #构造UIdef on_btn_train_clicked(self):      #按键的click事件"""按键click实现的功能"return

创建main.py文件

在PyCharm中创建一个main.py文件,创建应用程序和窗体对象的实例,显示窗体并运行。

from PyQt5.QtWidgets import QApplicationfrom myDialog import QMyDialogapp = QApplication(sys.argv) #创建GUI应用程序
mainform = QMyDialog() #创建主窗体
mainform.show() #显示主窗体
sys.exit(app.exec_())

解释

import sys

这行代码导入了Python的sys模块,该模块提供了与Python解释器和系统交互的功能。

from PyQt5.QtWidgets import QApplication

这行代码从PyQt5库中导入了QApplication类,用于创建GUI应用程序的实例

from myDialog import QMyDialog

这行代码从myDialog模块中导入了QMyDialog类,该模块中定义了一个自定义的对话框类

app = QApplication(sys.argv)

这行代码创建了一个QApplication对象,它表示整个GUI应用程序sys.argv是一个命令行参数的列表,它会被传递给QApplication对象。

mainform = QMyDialog()

这行代码创建了一个QMyDialog对象,即自定义的对话框窗体

mainform.show()

这行代码显示了主窗体,让它可见。

sys.exit(app.exec_())

这行代码启动了应用程序的主事件循环,并等待退出。app.exec_()方法开始事件循环,直到应用程序退出。sys.exit()方法确保在退出时清理资源并终止应用程序

综上所述,这段代码创建了一个使用PyQt5库的GUI应用程序,并显示了一个自定义的对话框窗体。它可以通过执行脚本来启动应用程序,并在用户关闭窗口时退出。

运行结果

总结

运行的入口在main.py文件,通过main.py文件:

1、创建GUI应用程序

2、创建主窗体,通过主窗体进入myDialog.py文件中的对窗体进行业务操作的类。通过这个类的init初始函数构建刚刚从ui文件转换过来的UI对象,然后构造UI。其余通过click等函数创建业务操作。

3、显示主窗体

前后端合并

参考链接:

PyQt5 从零开始环境搭建_pyqt5菜鸟教程_老菜鸟的每一天的博客-CSDN博客

main.py

import sysfrom PyQt5.QtWidgets import QApplicationfrom myDialog import QMyDialog
from ui_Dialog import Ui_Dialogapp = QApplication(sys.argv)   #创建GUI应用程序
mainform = QMyDialog()         #创建主窗体
ui = Ui_Dialog()    #创建UI对象
ui.setupUi(mainform) 
mainform.show()                #显示主窗体
sys.exit(app.exec_())

ui_Dialog.py

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'dialog.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Dialog(object):def setupUi(self, Dialog):Dialog.setObjectName("Dialog")Dialog.resize(400, 310)self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))self.buttonBox.setOrientation(QtCore.Qt.Horizontal)self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)self.buttonBox.setObjectName("buttonBox")self.retranslateUi(Dialog)self.buttonBox.accepted.connect(Dialog.accept) # type: ignoreself.buttonBox.rejected.connect(Dialog.reject) # type: ignoreQtCore.QMetaObject.connectSlotsByName(Dialog)def retranslateUi(self, Dialog):_translate = QtCore.QCoreApplication.translateDialog.setWindowTitle(_translate("Dialog", "Dialog"))

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

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

相关文章

Android 透明度颜色值对照表

一、透明度对照表 注:00是完全透明,FF就是完全不透明 我们的UI小姐姐就喜欢给「不透明度」,这个需要自己判断一下。 完全透明:0% HEX: 00 透明度:1% HEX: 30 透明度:2% HEX: 50 透明度:3% HEX: 80 透明度:4% HEX: A0 透明度:5…

【离散差分】LeetCode2953:统计完全子字符串

作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 本题其它解法 【滑动窗口】LeetCode2953:统计完全子字符串 涉及知识点 分块循环 离散差分 题目 给你一个字符串 word 和一个整数 k 。 如果 word 的一个子字符串 s 满足以下条件,我们称它是 完全…

云原生之深入解析如何限制Kubernetes集群中文件描述符与线程数量

一、背景 linux 中为了防止进程恶意使用资源,系统使用 ulimit 来限制进程的资源使用情况(包括文件描述符,线程数,内存大小等)。同样地在容器化场景中,需要限制其系统资源的使用量。ulimit: docker 默认支持…

08、分析测试执行时间及获取pytest帮助

官方用例 # content of test_slow_func.py import pytest from time import sleeppytest.mark.parametrize(delay,(1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.0,0.1,0.2,0,3)) def test_slow_func(delay):print("test_slow_func {}".format(delay))sleep(delay)assert…

概率论中,相关性和独立性的关系

相关性和独立性是概率统计中两个关键的概念。 相关性(Correlation): 定义: 相关性衡量两个变量之间的线性关系程度。如果两个变量的值在某种趋势下同时变化,我们说它们是相关的。相关性的取值范围在 -1 到 1 之间&…

同旺科技 USB TO SPI / I2C --- 调试W5500_TCP Client测试

所需设备: 内附链接 1、USB转SPI_I2C适配器(专业版); 首先,连接W5500模块与同旺科技USB TO SPI / I2C适配器,如下图: 网关IP地址寄存器(192.168.1.1)子网掩码寄存器(255.255.255.0)源MAC地址寄存器源IP地址寄存器(192.168.1.8)…

Django 模型基础(五)

一、models常用字段类型 (一 ) 索引,字符,数字 1、models.AutoField 自增列 如果没有,默认会生成一个名称为 id 的列, 如果要显示的自定义一个自增列,必须将给列设置为主键 primary_keyTru…

Maven 安装自己的依赖

命令 比如当前目录下的依赖包名称是 mytoolutils.jar&#xff0c;则在当前目录下执行 mvn install:install-file -Dfilemytoolutils.jar -DgroupIdutils -DartifactIdtool -Dversion1.0.0 -Dpackagingjar 引用 pom.xml 中引用 <dependency><groupId>utils</g…

ThreadPoolExecutor应用源码剖析(三)

3.3.5 ThreadPoolExecutor的Worker工作线程 Worker对象主要包含了两个内容 ● 工作线程要执行任务 ● 工作线程可能会被中断&#xff0c;控制中断 // Worker继承了AQS&#xff0c;目的就是为了控制工作线程的中断。 // Worker实现了Runnable&#xff0c;内部的Thread对象&…

QT4和 QT5 槽函数连接的区别

正常连接方式 //QT4官方用列QLabel *label new QLabel;QScrollBar *scrollBar new QScrollBar;QObject::connect(scrollBar, SIGNAL(valueChanged(int)),label, SLOT(setNum(int)));//QT5官方用列QLabel *label new QLabel;QLineEdit *lineEdit new QLineEdit;QObject::c…

STK Components 二次开发-飞行器

1.创建飞机 参数帮助文档 var poitList GetTracksData(); var waypointPropagator new WaypointPropagator(m_earth, poitList); var locationPoint waypointPropagator.CreatePoint();m_aircraft new Platform {Name "MH730",LocationPoint locationPoint,Or…

首次部署Linux系统的经历

我是一名电子信息工程专业的学生&#xff0c;有次在图书馆上自习的时候无意间看到其他同学的电脑屏幕&#xff0c;黑色的屏幕上显示着一行一行的代码&#xff0c;勾起了我无限的好奇&#xff0c;经过询问得知他是用的Linux操作系统&#xff0c;是和Windows完全不同的系统&#…

JDBC操作

本博客主要是介绍JDBC操作&#xff0c;即通过编译器操纵数据库中的数据。接下来以插入操作简单介绍该操作。 首先在创建的项目中&#xff0c;添加下列jar包&#xff08;点击可加载下载页面&#xff09;。 mysql-connector-java-5.1.49.jar 然后编写JDBC代码 public class JDB…

vue3 中使用 sse 最佳实践,封装工具

工具 // 接受参数 export interface SSEChatParams {url: string,// sse 连接onmessage: (event: MessageEvent) > void,// 处理消息的函数onopen: () > void,// 建立连接触发的事件finallyHandler: () > void,// 相当于 try_finally 中的 finally 部分&#xff0c;不…

机器学习(2)回归

0.前提 上一期&#xff0c;我们简单的介绍了一些有关机器学习的内容。学习机器学习的最终目的是为了服务我未来的毕设选择之一——智能小车&#xff0c;所以其实大家完全可以根据自己的需求来学习这门课&#xff0c;我做完另一辆小车后打算花点时间去进行一次徒步行&#xff0…

C++现代模板元编程

序 个人发现很多国外的大佬的演讲或者文章都很不错&#xff0c;但是鲜有人来进行分享&#xff0c;届后本人会时不时拿一些看起来很好的东西来给大家分享&#xff0c;主要也是搬运&#xff0c;不过也省去了大家去读英文的麻烦&#xff0c;同时文章中也会参杂着一些自己的见解。…

游戏mod制作--引擎与解包

摘要 游戏mod的制作过程第一步就是需要将原始的游戏工程文件进行解包&#xff0c;得到相应的资源文件&#xff08;贴图&#xff0c;音频&#xff0c;事件&#xff0c;模型甚至源代码等&#xff09;&#xff0c;这个时候下一步就是需要将解包出来的文件进行分类索引&#xff0c…

服务器内存使用率高的原因及解决方法_Maizyun

服务器内存使用率高的原因及解决方法 在服务器运行过程中&#xff0c;内存使用率过高可能会引发一系列问题&#xff0c;如性能下降、应用程序崩溃等。本文将深入探讨服务器内存使用率高的原因&#xff0c;并提出相应的解决方法。 一、内存使用率高的原因 应用程序缺陷&#…

20:kotlin 类和对象 --泛型(Generics)

类可以有类型参数 class Box<T>(t: T) {var value t }要创建类实例&#xff0c;需提供类型参数 val box: Box<Int> Box<Int>(1)如果类型可以被推断出来&#xff0c;可以省略 val box Box(1)通配符 在JAVA泛型中有通配符?、? extends E、? super E&…

25. K 个一组翻转链表

给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值…