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

python之pyqt专栏2-项目文件解析

 项目结构

        在上一篇文章python之pyqt专栏1-环境搭建,创建新的pyqt项目,下面我们来看一下这个项目下的文件。

        从下面的文件结构图可以看到,该项目下有3个文件,untitled.ui,untitled.py 以及main.py

QtDesigner可以UI界面的方式,编辑UI界面,并且保存成untitled.ui,

pyuic 会将untitled.ui 转换为untitled.py

        当我们需要改变程序的界面时,我们只需要通过QtDesigner 修改Ui界面,再通过pyuic转为".py"文件即可,不需要修改pyuic转换的".py"文件

untitled.py

        untitled.py有一个Ui_Form这个类只有setupUi(self, Form) retranslateUi(self, Form),两个函数。

       setupUi(self, Form) ,Form形参,用来传递对象。函数具体的语言则是执行一些界面的设置。

        retranslateUi(self, Form)函数,只要是实现国际化用的,用于界面文字自动识别当前国家

from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.pushButton = QtWidgets.QPushButton(parent=Form)
        self.pushButton.setGeometry(QtCore.QRect(140, 130, 75, 23))
        self.pushButton.setObjectName("pushButton")

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

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "PushButton"))

main.py 

#导入sys模块
import sys
# PyQt6.QtWidgets模块中导入QApplication, QWidget
from PyQt6.QtWidgets import QApplication, QWidget

# untitled模块中导入Ui_Form类
from untitled import Ui_Form


class MyMainForm(QWidget,Ui_Form):
    def __init__(self,parent=None):
        #调用父类的构造函数
        super(MyMainForm, self).__init__(parent)
        #调用继承Ui_Form过来的setupUi函数
        self.setupUi(self)



# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    # 实例化应用
    app = QApplication(sys.argv)
    #实例化MyMainForm
    myw = MyMainForm()
    #myw显示
    myw.show()
    #启动应用程序的事件循环并等待用户交互,直到应用程序关闭。
    sys.exit(app.exec())
 自定义MyMainForm

        继承QWidgetUi_Form,是多继承。在__init__(self,parent=None)构造函数中,调用父类的构造函数,由于Ui_Form构造函数,也不需要。因此只会调用QWidget构造函数。调用self.setupUi(self)则是MyMainForm实例进行样式进行设置

代码执行

       app = QApplication(sys.argv),创建了QApplication实例,你可以继续添加各种GUI元素(如按钮,文本框,滑动条等),并将它们组织在窗口中。通常,一个Qt应用程序至少包含一个窗口(由QMainWindow或QWidget派生)。

       myw = MyMainForm() 创建了MyMainForm类的一个实例,将会调用MyMainForm,__init__(self,parent=None)函数

      myw.show() 用myw对象的show()方法。这个方法会让MyMainForm窗口在屏幕上显示出来。在窗口显示出来之后,用户就可以开始与窗口进行交互

        sys.exit(app.exec()) 启动应用程序的事件循环并等待用户交互,直到应用程序关闭。

 

 

相关文章:

  • macos端文件夹快速访问工具 Default Folder X 最新for mac
  • 深度学习之生成唐诗案例(Pytorch版)
  • 华为云之在Linux系统下安装可视化界面
  • 被动接受需求
  • 【正点原子STM32连载】第五十九章 T9拼音输入法实验(Julia分形)实验 摘自【正点原子】APM32F407最小系统板使用指南
  • 竞赛 题目:基于深度学习的手势识别实现
  • 周总结2023-11-24
  • TMUX设置鼠标滚轮滑动来浏览之前的前面内容
  • Python BDD 框架比较之 pytest-bdd vs behave
  • Linux安装Mysql详细教程(两种安装方法)
  • 如何使用rclone将腾讯云COS桶中的数据同步到华为云OBS
  • Docker实践笔记7:构建MySQL 8镜像
  • Linux下的C++ socket编程实例
  • 有关Vue、微信小程序、UniApp中的CSS中的宽度width单位、自适应
  • NSGA-II求解微电网多目标优化调度(MATLAB)
  • CMakeLists.txt:打印find_package变量;判断库文件路径设定是否正确;install文件设置
  • Redis-Redis缓存高可用集群
  • 自监督LIGHTLY SSL教程
  • 【前端学java】Java中的异常处理(15)完结
  • 【每日一题】2824. 统计和小于目标的下标对数目-2023.11.24
  • 因操纵乙烯价格再遭诉讼,科莱恩等四家企业被陶氏索赔60亿
  • 外交部亚洲司司长刘劲松会见印度驻华大使罗国栋
  • 北洋“修约外交”的台前幕后——民国条约研究会档案探研
  • 训练孩子的科学思维,上海虹口推出“六个一百”旗舰工程
  • 刘国中:持续加强护士队伍建设,更好保障人民身体健康
  • 扶桑谈|从石破茂“越菲行”看日本周边外交布局战略新动向