Не удалось создать графический интерфейс на основе кода из PyQt Designer

#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. отметит ответ как правильный. Еще раз спасибо за это.