zoukankan      html  css  js  c++  java
  • Python & PyQt学习随笔:PyQt主程序的基本框架

    在完成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

  • 相关阅读:
    Excel 用row()函数 在Excel中自动添加序号,
    sql server数据导入
    Excel导入sq server后数据列以科学计数法显示
    left join 和 left outer join 的区别
    多点求值与暴力插值
    生成函数

    洲阁筛 学习笔记
    「NOI2017」游戏 解题报告
    CF 1045 H. Self-exploration 解题报告
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11931701.html
Copyright © 2011-2022 走看看