Python & PyQt学习随笔:PyQt主程序的基本框架
阅读原文时间:2023年07月08日阅读:1

在完成UI设计将UI通过PyUic转成Py文件后,由于这个生成的文件每次通过PyUic生成时都会被覆盖,因此应用的主程序必须另外单独编写py文件。需要将UI生成的文件import到主程序的py文件中。

主程序的代码框架包括:

一、import 相关类

包括UI对应的py文件,以及使用到的PyQt相关的模块,具体看应用的情况,但一般要将QtWidgets、QtGui 、QtCore 导入,如:

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtCore import  Qt

二、根据UI类派生一个子类

在主程序中,需要根据UI对应类以及QtWidgets派生一个新类,在该新类中实现所有槽函数的代码。

关于派生的新类请注意:

1、一定要有两个基类,一个是UI界面窗口的窗口类,一个是UI类本身;

2、一定要实现新类的构造方法,并在构造方法中调用父类的构造方法;

3、新类的构造方法中要调用self.setupUi(self) ,setupUi为PyUIC生成的UI类图形界面初始化的重要函数。

案例:

class w_ReadExecl(QtWidgets.QWidget,Ui_Ui_tableView):#派生一个新类
    def __init__(self): #新类构造函数,必须有
        super(w_ReadExecl, self).__init__() #调用父类构造函数,必须有
        self.setupUi(self)  #进行图形界面初始化,必须有
              self.tableView.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked | QtWidgets.QAbstractItemView.SelectedClicked)

    def showExcel(self): #按钮的槽函数
        filename = self.e_InputFileName.text()
        sheetname = self.inputSheetName.text()

        hashead = self.inputHasHead.isChecked()
        print(f"即将显示{filename}.[{sheetname }]"
        ........

三、编写应用主代码

这部分主要是要遵循PyQt5主程序的通用规范代码,包括:

1、 创建应用实例:

app = QtWidgets.QApplication(sys.argv)

每一个pyqt程序必须创建一个application对象,sys.argv是命令行参数,可以通过命令启动的时候传递参数。

2、初始化主程序窗口并显示:

w= w_ReadExecl()
w.show()

注意: w是主窗口应用名字,可以为自己想要的名字。

3、 事件处理开始,进入程序主循环

sys.exit(app.exec_())

主循环程序的任务就是等待事件,并把事件通过信号和槽的连接关系发送给指定应用处理。当调用app.exit()或者程序因为各种原因被破坏后,使用sys.exit()关闭程序,并释放内存资源。exec_()方法有下划线,是因为exec是一个Python关键词。因此,在PyQt中使用exec_()代替。

4、一个最小的主程序代码参考如下:

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = w_ReadExecl()
    w.show()
    sys.exit(app.exec_())

博客地址:https://blog.csdn.net/LaoYuanPython

老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036