PyQt4轉換ui檔案為py檔案
阿新 • • 發佈:2019-01-14
1.轉換ui為py
.py檔案是這樣生成的:
在cmd控制檯下,進入uic目錄:
cd C:\Users\MVTECH\Anaconda3\Lib\site-packages\PyQt4\uic
輸入命令:
python pyuic.py "ui檔案路徑" -o "py檔案路徑"
完成以上操作以後會生成.py檔案,以下為示例程式碼:
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'C:\experiment\Kezhihuang\ECGMachineLearning\ECGMachineLearning.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost! import sys from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) Form.resize(559, 566) self.gridLayout_2 = QtGui.QGridLayout(Form) self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setMargin(0) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.groupBox = QtGui.QGroupBox(Form) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth()) self.groupBox.setSizePolicy(sizePolicy) self.groupBox.setObjectName(_fromUtf8("groupBox")) self.gridLayout_3 = QtGui.QGridLayout(self.groupBox) self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) self.label = QtGui.QLabel(self.groupBox) self.label.setObjectName(_fromUtf8("label")) self.horizontalLayout.addWidget(self.label) self.lineEdit = QtGui.QLineEdit(self.groupBox) self.lineEdit.setMinimumSize(QtCore.QSize(251, 0)) self.lineEdit.setObjectName(_fromUtf8("lineEdit")) self.horizontalLayout.addWidget(self.lineEdit) self.pushButton = QtGui.QPushButton(self.groupBox) self.pushButton.setObjectName(_fromUtf8("pushButton")) self.horizontalLayout.addWidget(self.pushButton) self.gridLayout_3.addLayout(self.horizontalLayout, 0, 0, 1, 1) self.verticalLayout.addWidget(self.groupBox) self.groupBox_2 = QtGui.QGroupBox(Form) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth()) self.groupBox_2.setSizePolicy(sizePolicy) self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) self.gridLayout_4 = QtGui.QGridLayout(self.groupBox_2) self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) self.gridLayout = QtGui.QGridLayout() self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.checkBox_6 = QtGui.QCheckBox(self.groupBox_2) self.checkBox_6.setObjectName(_fromUtf8("checkBox_6")) self.gridLayout.addWidget(self.checkBox_6, 1, 1, 1, 1) self.label_2 = QtGui.QLabel(self.groupBox_2) self.label_2.setObjectName(_fromUtf8("label_2")) self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1) self.checkBox_5 = QtGui.QCheckBox(self.groupBox_2) self.checkBox_5.setObjectName(_fromUtf8("checkBox_5")) self.gridLayout.addWidget(self.checkBox_5, 0, 5, 1, 1) self.checkBox = QtGui.QCheckBox(self.groupBox_2) self.checkBox.setObjectName(_fromUtf8("checkBox")) self.gridLayout.addWidget(self.checkBox, 0, 1, 1, 1) self.checkBox_7 = QtGui.QCheckBox(self.groupBox_2) self.checkBox_7.setObjectName(_fromUtf8("checkBox_7")) self.gridLayout.addWidget(self.checkBox_7, 1, 2, 1, 1) self.checkBox_2 = QtGui.QCheckBox(self.groupBox_2) self.checkBox_2.setObjectName(_fromUtf8("checkBox_2")) self.gridLayout.addWidget(self.checkBox_2, 0, 2, 1, 1) self.checkBox_9 = QtGui.QCheckBox(self.groupBox_2) self.checkBox_9.setObjectName(_fromUtf8("checkBox_9")) self.gridLayout.addWidget(self.checkBox_9, 1, 4, 1, 1) self.checkBox_3 = QtGui.QCheckBox(self.groupBox_2) self.checkBox_3.setObjectName(_fromUtf8("checkBox_3")) self.gridLayout.addWidget(self.checkBox_3, 0, 3, 1, 1) self.pushButton_2 = QtGui.QPushButton(self.groupBox_2) self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) self.gridLayout.addWidget(self.pushButton_2, 0, 6, 2, 1) self.checkBox_4 = QtGui.QCheckBox(self.groupBox_2) self.checkBox_4.setObjectName(_fromUtf8("checkBox_4")) self.gridLayout.addWidget(self.checkBox_4, 0, 4, 1, 1) self.checkBox_8 = QtGui.QCheckBox(self.groupBox_2) self.checkBox_8.setObjectName(_fromUtf8("checkBox_8")) self.gridLayout.addWidget(self.checkBox_8, 1, 3, 1, 1) self.gridLayout_4.addLayout(self.gridLayout, 0, 0, 1, 1) self.label_2.raise_() self.groupBox.raise_() self.pushButton_2.raise_() self.verticalLayout.addWidget(self.groupBox_2) self.groupBox_3 = QtGui.QGroupBox(Form) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.groupBox_3.sizePolicy().hasHeightForWidth()) self.groupBox_3.setSizePolicy(sizePolicy) self.groupBox_3.setObjectName(_fromUtf8("groupBox_3")) self.gridLayout_5 = QtGui.QGridLayout(self.groupBox_3) self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5")) self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) self.label_3 = QtGui.QLabel(self.groupBox_3) self.label_3.setObjectName(_fromUtf8("label_3")) self.horizontalLayout_2.addWidget(self.label_3) self.comboBox = QtGui.QComboBox(self.groupBox_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.comboBox.sizePolicy().hasHeightForWidth()) self.comboBox.setSizePolicy(sizePolicy) self.comboBox.setMinimumSize(QtCore.QSize(161, 0)) self.comboBox.setObjectName(_fromUtf8("comboBox")) self.comboBox.addItem(_fromUtf8("")) self.comboBox.addItem(_fromUtf8("")) self.comboBox.addItem(_fromUtf8("")) self.horizontalLayout_2.addWidget(self.comboBox) self.pushButton_3 = QtGui.QPushButton(self.groupBox_3) self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) self.horizontalLayout_2.addWidget(self.pushButton_3) self.gridLayout_5.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) self.comboBox.raise_() self.label_3.raise_() self.groupBox_2.raise_() self.pushButton_3.raise_() self.verticalLayout.addWidget(self.groupBox_3) self.groupBox_4 = QtGui.QGroupBox(Form) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.groupBox_4.sizePolicy().hasHeightForWidth()) self.groupBox_4.setSizePolicy(sizePolicy) self.groupBox_4.setObjectName(_fromUtf8("groupBox_4")) self.gridLayout_6 = QtGui.QGridLayout(self.groupBox_4) self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6")) self.horizontalLayout_3 = QtGui.QHBoxLayout() self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) self.label_4 = QtGui.QLabel(self.groupBox_4) self.label_4.setObjectName(_fromUtf8("label_4")) self.horizontalLayout_3.addWidget(self.label_4) self.comboBox_2 = QtGui.QComboBox(self.groupBox_4) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.comboBox_2.sizePolicy().hasHeightForWidth()) self.comboBox_2.setSizePolicy(sizePolicy) self.comboBox_2.setMinimumSize(QtCore.QSize(161, 0)) self.comboBox_2.setObjectName(_fromUtf8("comboBox_2")) self.comboBox_2.addItem(_fromUtf8("")) self.comboBox_2.addItem(_fromUtf8("")) self.comboBox_2.addItem(_fromUtf8("")) self.comboBox_2.addItem(_fromUtf8("")) self.horizontalLayout_3.addWidget(self.comboBox_2) self.label_5 = QtGui.QLabel(self.groupBox_4) self.label_5.setObjectName(_fromUtf8("label_5")) self.horizontalLayout_3.addWidget(self.label_5) self.spinBox = QtGui.QSpinBox(self.groupBox_4) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.spinBox.sizePolicy().hasHeightForWidth()) self.spinBox.setSizePolicy(sizePolicy) self.spinBox.setMaximumSize(QtCore.QSize(42, 22)) self.spinBox.setObjectName(_fromUtf8("spinBox")) self.horizontalLayout_3.addWidget(self.spinBox) self.pushButton_4 = QtGui.QPushButton(self.groupBox_4) self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) self.horizontalLayout_3.addWidget(self.pushButton_4) self.gridLayout_6.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) self.verticalLayout.addWidget(self.groupBox_4) self.groupBox_5 = QtGui.QGroupBox(Form) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.groupBox_5.sizePolicy().hasHeightForWidth()) self.groupBox_5.setSizePolicy(sizePolicy) self.groupBox_5.setObjectName(_fromUtf8("groupBox_5")) self.gridLayout_7 = QtGui.QGridLayout(self.groupBox_5) self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7")) self.textEdit = QtGui.QTextEdit(self.groupBox_5) self.textEdit.setObjectName(_fromUtf8("textEdit")) self.gridLayout_7.addWidget(self.textEdit, 0, 0, 1, 1) self.verticalLayout.addWidget(self.groupBox_5) self.verticalLayout.setStretch(0, 1) self.verticalLayout.setStretch(2, 1) self.verticalLayout.setStretch(3, 1) self.verticalLayout.setStretch(4, 5) self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(_translate("Form", "Form", None)) self.groupBox.setTitle(_translate("Form", "Data Import", None)) self.label.setText(_translate("Form", "step1:", None)) self.pushButton.setText(_translate("Form", "load", None)) self.groupBox_2.setTitle(_translate("Form", "Feature extraction", None)) self.checkBox_6.setText(_translate("Form", "wvlt", None)) self.label_2.setText(_translate("Form", "step2:", None)) self.checkBox_5.setText(_translate("Form", "hbf5", None)) self.checkBox.setText(_translate("Form", "resample_10", None)) self.checkBox_7.setText(_translate("Form", "wvlt+pca", None)) self.checkBox_2.setText(_translate("Form", "raw", None)) self.checkBox_9.setText(_translate("Form", "myMorph", None)) self.checkBox_3.setText(_translate("Form", "u-lbp", None)) self.pushButton_2.setText(_translate("Form", "Feature extraction", None)) self.checkBox_4.setText(_translate("Form", "lbp", None)) self.checkBox_8.setText(_translate("Form", "HOS", None)) self.groupBox_3.setTitle(_translate("Form", "Feature selection", None)) self.label_3.setText(_translate("Form", "step3:", None)) self.comboBox.setItemText(0, _translate("Form", "PER", None)) self.comboBox.setItemText(1, _translate("Form", "PCA", None)) self.comboBox.setItemText(2, _translate("Form", "Best", None)) self.pushButton_3.setText(_translate("Form", "Feature selection", None)) self.groupBox_4.setTitle(_translate("Form", "Training model or import model", None)) self.label_4.setText(_translate("Form", "step4:", None)) self.comboBox_2.setItemText(0, _translate("Form", "bst", None)) self.comboBox_2.setItemText(1, _translate("Form", "svm", None)) self.comboBox_2.setItemText(2, _translate("Form", "knn", None)) self.comboBox_2.setItemText(3, _translate("Form", "rfc", None)) self.label_5.setText(_translate("Form", "GridSearch:", None)) self.pushButton_4.setText(_translate("Form", "Training model", None)) self.groupBox_5.setTitle(_translate("Form", "Show results", None))
注意:還沒結束,這個時候你執行.py檔案不會出錯,但是也不會出現介面,要想執行出界面還需另外新增程式碼。
2.轉換後的py檔案還不能執行,需要視覺化操作才可執行。
有兩種方法:
第一種方法:直接在生成的.py檔案的後面新增以下程式碼:
class MainWindow(QtGui.QWidget): def __init__(self,parent=None): QtGui.QWidget.__init__(self,parent) self.ui = Ui_Form() self.ui.setupUi(self) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) myapp = MainWindow() myapp.show() app.exec_()
第二種方法:在同目錄下新建Main.py,根據設計UI時選擇視窗型別填寫指令碼內容
如圖,圖中根視窗類名(此處為QWidget)物件名(此處為Form),即如下填寫:
# -*- coding: utf-8 -*- """ Created on Thu Sep 6 09:47:12 2018 @author: MVTECH """ from PyQt4 import QtGui from ECGMachineLearning import * import sys class MainWindow(QtGui.QWidget): def __init__(self,parent=None): QtGui.QWidget.__init__(self,parent) self.ui = Ui_Form() self.ui.setupUi(self) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) myapp = MainWindow() myapp.show() app.exec_()
其他類似視窗只需替換程式碼中的紅色和藍色部分為視窗例項類名、物件名即可!!!
注意:像Dialog這樣的視窗還需要在MainWindow中實現accept()(確認)和reject()(取消)函式,自己融會貫通即可!!!