生成的.py格式的文件

在上一篇博客中:Python制作小软件——1. 安装并使用PyQt5进行界面设计,我们说到生成了界面对应的.py格式的文件,里面的内容如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'srs1.0.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_SRS(object):
    def setupUi(self, SRS):
        SRS.setObjectName("SRS")
        SRS.resize(501, 102)
        self.widget = QtWidgets.QWidget(SRS)
        self.widget.setGeometry(QtCore.QRect(10, 10, 481, 90))
        self.widget.setObjectName("widget")
        self.gridLayout = QtWidgets.QGridLayout(self.widget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setDefault(False)
        self.pushButton.setFlat(False)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 0, 4, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 1, 4, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.widget)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.widget)
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setBold(True)
        font.setItalic(False)
        font.setUnderline(False)
        font.setWeight(75)
        font.setStrikeOut(False)
        font.setStyleStrategy(QtGui.QFont.PreferDefault)
        self.label_3.setFont(font)
        self.label_3.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.label_3.setMouseTracking(True)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
        self.pushButton_ok = QtWidgets.QPushButton(self.widget)
        self.pushButton_ok.setDefault(True)
        self.pushButton_ok.setObjectName("pushButton_ok")
        self.gridLayout.addWidget(self.pushButton_ok, 2, 2, 1, 1)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton_3 = QtWidgets.QPushButton(self.widget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)
        self.gridLayout.addLayout(self.horizontalLayout, 2, 4, 1, 1)
        self.lineEdit = QtWidgets.QLineEdit(self.widget)
        self.lineEdit.setObjectName("lineEdit")
        self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 2)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.widget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.gridLayout.addWidget(self.lineEdit_2, 1, 1, 1, 2)
        self.pushButton.raise_()
        self.pushButton_2.raise_()
        self.label_3.raise_()
        self.label_3.raise_()

        self.retranslateUi(SRS)
        self.pushButton_3.clicked.connect(SRS.close)
        QtCore.QMetaObject.connectSlotsByName(SRS)

    def retranslateUi(self, SRS):
        _translate = QtCore.QCoreApplication.translate
        SRS.setWindowTitle(_translate("SRS", "Dialog"))
        self.label.setText(_translate("SRS", "请输入文件所在路径:"))
        self.pushButton.setText(_translate("SRS", "添加文件"))
        self.pushButton_2.setText(_translate("SRS", "添加文件夹"))
        self.label_2.setText(_translate("SRS", "输出文件夹:"))
        self.label_3.setText(_translate("SRS", "<html><head/><body><p><br/></p></body></html>"))
        self.pushButton_ok.setText(_translate("SRS", "OK"))
        self.pushButton_3.setText(_translate("SRS", "Cancel"))

上面的代码对应的是界面中所有的内容,这个我们可以不用管,只需要知道相应控件对应的变量名称是什么,这个我们在写连接函数时需要用到。


在Python中查看在Qt Designer中设计的界面

我们发现,有了上述的代码,却不能直接运行查看我们刚刚设计出来的界面。这时我们首先将前面的.py文件存到Python的默认路径下,然后再新建一个文件夹,输入如下代码即可运行查看了。

from PyQt5 import QtWidgets
from srs import Ui_SRS

class mywindow(QtWidgets.QWidget, Ui_SRS):
    def  __init__ (self):
        super(mywindow, self).__init__()
        self.setupUi(self)

if __name__=="__main__":
    import sys
    app=QtWidgets.QApplication(sys.argv)
    ui = mywindow()    
    ui.show()
    sys.exit(app.exec_())

运行之后就会弹出我们前面设计好的界面:



python ffmpeg 退出所有在录制的视频_PyQt5


但这时候点击里面所有的按键都没有作用(因为还没写好里面的一些函数,只有一个忽悠人的空架子)。所以下面,我们就要开始丰富上面的那段代码,来实现每个按钮的功能。

在这之前,我们需要先设置Cancel的退出功能,这部分功能其实是在Qt Designer里面就需要设置好的。


设置按钮的退出的功能

首先回到我们的Qt Designer。首先选择上面的Edit Signals/Slots,如下图所示。这个叫做“槽”,很多博客对其有着详细的描述,这里我们只是简单的进行使用。



python ffmpeg 退出所有在录制的视频_PyQt5_02


然后按着Cancel按钮,滑动鼠标,就会弹出下面的框框出来:



python ffmpeg 退出所有在录制的视频_PyQt5_03


这里我们选择下面clicked()然后将下面的显示所有内容那里打上勾,然后再选择右边的close(),即可完成操作。



python ffmpeg 退出所有在录制的视频_PyQt5_04


完成之后的界面长下面这样:



python ffmpeg 退出所有在录制的视频_Qt_05


然后进行保存即可。之后记得再将.ui文件转换为.py文件。

这一部分对应的原始文件中代码是:

self.pushButton_3.clicked.connect(SRS.close)

这时,我们就可以再在Python运行主体函数,在弹出我们所需的界面后,点击Cancel发现可以直接关闭窗口了。

到这里,界面对应的代码基本就不需要再做改动了,后面的内部实现功能直接照着.py文件(例子中是srs.py)中的对象名称进行设计即可。这部分内容在 Python制作小软件——3. 利用PyQt5实现界面中的功能中会进行详细介绍~