【问题标题】:Unable to build GUI from the code from PyQt Designer无法从 PyQt Designer 的代码构建 GUI
【发布时间】:2019-10-05 18:16:37
【问题描述】:

我从 pyqt 设计器制作了一个 GUI 文件,我将其转换为 .py 文件。但是当我在我的 IDE(Pycharm 和 sublime 文本)中加载该 .py 代码时,我尝试运行它,它运行没有错误,但是没有加载 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"))

【问题讨论】:

    标签: python pyqt pyqt5 qt-designer


    【解决方案1】:

    你有两个选择:

    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_())
    

    【讨论】:

    • 没办法......我被教导使用这个终端命令“pyuic5 filename.ui > filename.py”进行转换,你在最后使用 -x 给出的终端命令就像一个魅力。谢谢老兄。
    • @Hitsugaya 不要使用>,它会给你带来问题,而是使用-o
    • 会将答案标记为正确。再次感谢它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2014-01-22
    • 2020-08-11
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多