環境:python 3.6.6
編輯器:pycharm
其他:QtDesigner:Qt Designer,是一個直觀可見的全方位 GUI 構造器,它所設計出來的用戶界面能夠在多種平台上使用。它是 Qt SDK 的一部分,也是最為重要的開發 工具之一。利用 Qt Designer,我們可以拖放各種 Qt 控件構造圖形用戶界面並可預覽效果。
PyUIC:可將UI文件轉換為.py文件
利用QtDesigner設計界面
pycharm中Tools——External Tools——QtDesigner,進入如下界面:
將布局設置為下面所示:
將ui文件保存至py項目所在的文件夾中:
利用PyUIC將UI文件轉換為.py文件
UI文件右鍵單擊——External Tools——PyUIC即可。
轉換的.py文件如下:
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'dialog.ui' # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets import sys class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(400, 300) self.pushButton = QtWidgets.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(270, 70, 71, 16)) self.pushButton.setObjectName("pushButton") self.pushButton.resize(100,30) self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(20, 70, 71, 16)) self.label.setObjectName("label") self.textBrowser = QtWidgets.QTextBrowser(Dialog) self.textBrowser.setGeometry(QtCore.QRect(100, 120, 221, 141)) self.textBrowser.setObjectName("textBrowser") self.lineEdit = QtWidgets.QLineEdit(Dialog) self.lineEdit.setGeometry(QtCore.QRect(100, 70, 113, 20)) self.lineEdit.setObjectName("lineEdit") self.label_2 = QtWidgets.QLabel(Dialog) self.label_2.setGeometry(QtCore.QRect(10, 120, 81, 16)) self.label_2.setObjectName("label_2") self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.pushButton.setText(_translate("Dialog", "PushButton")) self.label.setText(_translate("Dialog", "這是Line Edit->")) self.label_2.setText(_translate("Dialog", "這是Text Browser->"))
運行程序
加入下列代碼:
def main(): ''' 主函數,用於運行程序 :return: None ''' app = QtWidgets.QApplication(sys.argv) dialog = QtWidgets.QDialog() ui = Ui_Dialog() ui.setupUi(dialog) dialog.show() sys.exit(app.exec_()) if __name__ == '__main__': main()
注意: Qt Designer編寫的程序可讀性較差,在初期學習的時候使用Qt Designer來生成代碼,卻不利於對原理的理解。按照自己的思路去編寫代碼更有效果。