#python #pyqt #pyqt5 #pyuic
Вопрос:
Я создал файл графического интерфейса из pyqt designer,который я преобразовал в файл .py.но когда я загружаю его .py-код в моей IDE (Pycharm и sublime text),и я пытаюсь его запустить,он работает без ошибок,но физический аспект графического интерфейса не загружен,я попробовал пользовательский код из Интернета,который отлично работал,графический интерфейс отображается при запуске этого кода. я приведу более простой код,чем тот, над которым я сейчас работаю, так как кажется, что весь код, сгенерированный с помощью pyqt designer, вообще не работает для меня в отношении его физического аспекта.
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(170, 200, 91, 30)) self.pushButton.setObjectName("pushButton") self.lineEdit = QtWidgets.QLineEdit(Form) self.lineEdit.setGeometry(QtCore.QRect(30, 40, 113, 30)) self.lineEdit.setObjectName("lineEdit") self.retranslateUi(Form) self.pushButton.clicked.connect(self.lineEdit.clear) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushButton.setText(_translate("Form", "PushButton"))
Ответ №1:
У вас есть 2 варианта:
1. Предположим, что вы использовали следующую команду:
pyuic5 your_filename.ui -o your_filename.py # or # pyuic5 your_filename.ui gt; your_filename.py
Эта команда не создает объект окна или не вызывает метод show, поэтому окно не отображается, вы должны использовать опцию -x
:
pyuic5 your_filename.ui -o your_filename.py -x
2. Добавьте код, вызывающий объект:
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(170, 200, 91, 30)) self.pushButton.setObjectName("pushButton") self.lineEdit = QtWidgets.QLineEdit(Form) self.lineEdit.setGeometry(QtCore.QRect(30, 40, 113, 30)) self.lineEdit.setObjectName("lineEdit") self.retranslateUi(Form) self.pushButton.clicked.connect(self.lineEdit.clear) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushButton.setText(_translate("Form", "PushButton")) if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) w = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(w) w.show() sys.exit(app.exec_())
Комментарии:
1. ни за что… меня учили конвертировать с помощью этой терминальной команды «имя файла pyuic5.ui gt; filename.py», команда терминала, которую вы дали с-x в конце, работает как заклинание. Спасибо, приятель.
2. @Hitsugaya не используйте
gt;
, это может принести вам проблемы, вместо этого используйте-o
3. отметит ответ как правильный. Еще раз спасибо за это.