码迷,mamicode.com
首页 > Windows程序 > 详细

PyQt5创建第一个窗体(正规套路)

时间:2016-04-25 19:36:00      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

一、Pyqt5 创建第一个窗体

很多人写窗体程序都是直接敲代码,不使用设计器,我个人不是很赞成这种做法。使用设计器的好处是直观、维护方便,尤其开发复杂窗体的效率高。

但是每次修改ui文件后,需要重新生成py文件,会将原来的内容覆盖掉,为了避免这种情况,引入了一个中间类。主要步骤如下:

1使用QtDesigner创建一个简单的对话框,保存成simpleDialog.ui。

2使用cmd,进入simpleDialog.ui文件所在的目录,运行命令pyuic5 simpleDialog.ui >ui_simpleDialog.py

3打开ui_simpleDialog.py,pyqt自动生成的代码如下(无需任何修改):

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):

    def setupUi(self, Form):

        Form.setObjectName("Form")

        Form.resize(400, 300)

        self.pushButton = QtWidgets.QPushButton(Form)

        self.pushButton.setGeometry(QtCore.QRect(60, 70, 241, 131))

        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Form)

        self.pushButton.clicked.connect(Form.close)

        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):

        _translate = QtCore.QCoreApplication.translate

        Form.setWindowTitle(_translate("Form", "Form"))

        self.pushButton.setText(_translate("Form", "PushButton"))

可以看到刚才新建的对话框的类名称是”Ui_Form”。

4新建一个simpleDialog.py文件,编写代码如下:

from PyQt5 import QtCore, QtGui, QtWidgets

from ui_simpledialog import Ui_Form

import sys

class SimpleDialogForm(Ui_Form):#从自动生成的界面类继承

    def __init__(self, parent = None):

        super(SimpleDialogForm, self).__init__()

    def yourFunctions(self):

        Pass

  #这个类中处理你自己的业务逻辑。界面ui可随心所欲的修改,不影响你已经编写的逻辑。

自定义一个类(SimpleDialogForm)继承自pyqt自动生成的类,然后覆写”构造函数”,剩余的工作就是你自己想要添加的功能了。

5完善运行测试代码,如下:

if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)

    main = QtWidgets.QMainWindow()#创建一个主窗体(必须要有一个主窗体)

    content = SimpleDialogForm()#创建对话框

    content.setupUi(main)#将对话框依附于主窗体

    main.show()#主窗体显示

sys.exit(app.exec_())

6为什么要这么做?

基于界面与实现分离的原则,我们使用QtDesigner设计的窗体,仅仅作为界面使用,具体业务逻辑通过单独的文件实现,这样以后如果界面发生变动,pyqt自动生成窗体代码时不会覆盖掉我们已经编写的业务逻辑。

 

PyQt5创建第一个窗体(正规套路)

标签:

原文地址:http://www.cnblogs.com/shelwinnee/p/5432304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!