Хочу, в целях экономии времени в будущем, написать небольшую программку, которая будет проделывать операцию конвертирования файла UI через консоль автоматически.
Сразу встала такая проблема: Создаю форму через QtDesigner, конвертирую ее через pyuic5 и уже в питоновском файле добавляю функцию “showDialog”, предварительно привязав его к сигналу clicked объекта pushButton. При нажатии на эту кнопку приложение вылетает с критической ошибкой.
В аналогичном примере все работало, но там класс по-другому инициализировался и полностью вручную писался. Подскажите что здесь не так.
Вот сам файл:
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(417, 210) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setMinimumSize(QtCore.QSize(55, 0)) self.label.setMaximumSize(QtCore.QSize(55, 20)) self.label.setObjectName("label") self.horizontalLayout.addWidget(self.label) self.leQt = QtWidgets.QLineEdit(self.centralwidget) self.leQt.setObjectName("leQt") self.horizontalLayout.addWidget(self.leQt) self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_4.setObjectName("pushButton_4") self.horizontalLayout.addWidget(self.pushButton_4) self.verticalLayout.addLayout(self.horizontalLayout) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setMinimumSize(QtCore.QSize(55, 0)) self.label_2.setMaximumSize(QtCore.QSize(55, 20)) self.label_2.setObjectName("label_2") self.horizontalLayout_2.addWidget(self.label_2) self.leUI = QtWidgets.QLineEdit(self.centralwidget) self.leUI.setObjectName("leUI") self.horizontalLayout_2.addWidget(self.leUI) self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_3.setObjectName("pushButton_3") self.horizontalLayout_2.addWidget(self.pushButton_3) self.verticalLayout.addLayout(self.horizontalLayout_2) self.pushButton = QtWidgets.QPushButton(self.centralwidget) # ЭТОТ ОБЪЕКТ self.pushButton.setObjectName("pushButton") self.pushButton.clicked.connect(self.showDialog) # ЗАКОННЕКТИЛ ФУНКЦИЮ self.verticalLayout.addWidget(self.pushButton) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Конвертирование UI в Py")) self.label.setText(_translate("MainWindow", "PYUIC5.bat")) self.pushButton_4.setText(_translate("MainWindow", "Обзор")) self.label_2.setText(_translate("MainWindow", "UI")) self.pushButton_3.setText(_translate("MainWindow", "Обзор")) self.pushButton.setText(_translate("MainWindow", "Конвертировать")) def showDialog(self): fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')[0] if (fname != ""): f = open(fname, 'r') if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())