Невозможно построить графический интерфейс из кода из PyQt Designer - PullRequest
5 голосов
/ 19 мая 2019

Я сделал GUI-файл из PyQt Designer, который я преобразовал в .py file.but, когда я загружаю этот .py код в мою IDE (Pycharm и возвышенный текст), и я пытаюсь запустить его, он работает без ошибок, но физический аспект GUI не загружен, я попробовал пользовательский код из интернета, который отлично работал, GUI появляется, когда я запускаю этот код. я приведу более простой код, чем тот, над которым я сейчас работаю, так как кажется, что весь код, сгенерированный из конструктора pyqt, вообще не работает для меня в отношении его физического аспекта.

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 Ответ

4 голосов
/ 19 мая 2019

У вас есть 2 варианта:

1. Предполагается, что вы использовали следующую команду:

pyuic5 your_filename.ui -o your_filename.py
# or 
# pyuic5 your_filename.ui > 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_())
...