Qt Designer生成的ui文件转py文件
win+r
打开cmd,进入ui文件所在的目录下。- 输入
python -m PyQt5.uic.pyuic ui文件名.ui -o 想要生成的py文件名.py
- 运行后将在ui文件目录下生成py文件。
通过类的继承来调用生成的py文件
首先是生成的py文件,我将其命名为了testtest.py
。
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(1262, 791)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(910, 680, 241, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(540, 670, 112, 34))
self.pushButton.setMouseTracking(False)
self.pushButton.setObjectName("pushButton")
self.asdq1111 = QtWidgets.QOpenGLWidget(Dialog)
self.asdq1111.setGeometry(QtCore.QRect(440, 150, 300, 200))
self.asdq1111.setObjectName("asdq1111")
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.pushButton.setText(_translate("Dialog", "PushButton"))
然而通过转换 ui 文件为 py 文件,得到的只是界面的 ui 的类, 并不包括启动界面的函数,我们称之为界面文件。因此需要新建一个 py 文件使窗口显示出来,这个新建的文件我们称为逻辑文件。
下面是逻辑文件的代码:
import sys
from PyQt5.QtWidgets import QApplication, QDialog
#"testtest"生成的py文件名,"Ui_Dialog"为引用的类名
from testtest import Ui_Dialog
class MyWindow(QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(MyWindow,self).__init__()
self.setupUi(self)
if __name__ == '__main__':
# 每一pyqt5应用程序必须创建一个应用程序对象。sys.argv参数是一个列表,从命令行输入参数。
app = QApplication(sys.argv)
myWin = MyWindow()
# 显示在屏幕上
myWin.show()
# 系统exit()方法确保应用程序干净的退出
# 的exec_()方法有下划线。因为执行是一个Python关键词。因此,exec_()代替
sys.exit(app.exec_())
我们通过对生成的py文件进行类的继承,来展示主窗体。
lineEdit操作
使文本框显示“fuck u”文字:
self.lineEdit.setText("fuck u")
获取文本框中输入的文字:
self.lineEdit.text()
信号相关操作
在文本框中的字符发生改变时触发信号:
self.lineEdit.textChanged.connect()
鼠标光标离开当前lineEdit时触发信号:
self.lineEdit.editingFinished.connect()
在文本框中的字符中改变选中的字符时触发信号:
self.lineEdit.selectionChanged.connect()
QPushButton操作
设置按钮不可用(True为按钮可用):
self.pushButton.setEnabled(False)
设置按钮上的文本:
self.pushButton.setText()
获取按钮上的文本:
self.pushButton.text()
信号操作
点击触发信号,其中xxx为一个方法(def):
self.pushButton.clicked.connect(self.xxx)
py文件封装为exe文件
- 打包的时候,我们需要用到
pyinstaller
。安装:pip install pyinstaller
- 在cmd中输入
pyinstaller.exe -F -w (py文件的位置)
。 - 打包好的文件在用户文件夹的dist文件夹下: