当前位置: 首页 > article >正文

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, QtWidgets


class 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: ignore
        self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))

创建myDialog.py文件

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

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

from PyQt5.QtWidgets import QDialog

from ui_Dialog import Ui_Dialog


class QMyDialog(QDialog):
    def __init__(self,parent=None):
        super().__init__(parent)
        self.ui = Ui_Dialog()    #创建UI对象
        self.ui.setupUi(self)  #构造UI

    def on_btn_train_clicked(self):      #按键的click事件
        """
        按键click实现的功能
        "
        return

创建main.py文件

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

from PyQt5.QtWidgets import QApplication

from myDialog import QMyDialog

app = 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 sys

from PyQt5.QtWidgets import QApplication

from myDialog import QMyDialog
from ui_Dialog import Ui_Dialog

app = 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, QtWidgets


class 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: ignore
        self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))


http://www.kler.cn/news/156290.html

相关文章:

  • 【算法】滑动窗口题单——5.多指针滑动窗口⭐
  • LabVIEW通过编程将图形类控件的X轴显示为时间戳
  • easyrecovery2024绿色版中文语言电脑数据恢复工具
  • 网络层之SDN基本概念、路由算法和路由协议
  • java的弱引用、软引用和虚引用
  • Ubuntu Server 20.04.6安装Anaconda3
  • javascript中的过滤操作
  • 11月推荐阅读的12篇大语言模型相关论文
  • 无需服务器,无需魔法,拥有一个微信机器人就是这么简单
  • 数学建模-数据新动能驱动中国经济增长的统计研究-基于数字产业化和产业数字化的经济贡献测度
  • 性能测试常见面试题
  • 网络细节核心笔记
  • Android监听用户的截屏、投屏、录屏行为
  • Google Guava 反射工具使用详解
  • 用纯 CSS 实现网格背景
  • 【Node.js】Node.js环境下载与安装教程(Windows系统)
  • 《系统架构设计师教程(第2版)》第2章-计算机系统基础知识-02-计算软件
  • 34、AD/DA
  • Vue 与 React
  • Python标准库:datetime模块【侯小啾python领航班系列(二十五)】
  • 【python爬虫】设计自己的爬虫 2. 数据保存封装 mongodb,mysql和elasticsearch
  • SQL -高阶3
  • Linux系统centos7防火墙firewall开放IP及端口命令
  • 2023.12.3 hive-sql日期函数小练习
  • k8s中批量处理Pod应用的Job和CronJob控制器、处理守护型pod的DaemonSet控制器介绍
  • 深入理解Go语言GC机制
  • SAP_ABAP_RZ11解决SAP运行超时问题 TIME_OUT / rdisp/scheduler/prio_high/max_runtime
  • 最强Node js 后端框架学习看这一篇文章就够
  • 内衣洗衣机哪个牌子好用?小型洗衣机五大排名
  • 在项目根目录未找到 app.json