【问题标题】:Using Qt Designer 5.8 with PyQt5: problematic example from PyQt v3将 Qt Designer 5.8 与 PyQt5 一起使用:PyQt v3 中的问题示例
【发布时间】:2017-04-06 09:01:54
【问题描述】:

我了解(或多或少)official documentation页面的内容除了最后的例子,基本上如下(我不在乎按钮):

from ui_imagedialog import ImageDialog

class MyImageDialog(ImageDialog):
    def __init__(self):
      super(MyImageDialog, self).__init__()

    # Connect up the buttons.
      self.okButton.clicked.connect(self.accept)

问题:我有点难以理解如何使这个 sn-p 工作。它出现错误:'cannon import name ImageDialog'。

我应该从上述文档页面的第一个示例中添加什么以使此代码显示一个对话框窗口?

我的尝试: 我已经使用生成的 Python 代码创建了文件,名称为 ui_imagedialog.py 。它具有以下内容,显然可以独立运行:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_ImageDialog(object):
    def setupUi(self, ImageDialog):
        ImageDialog.setObjectName("ImageDialog")
        ImageDialog.resize(303, 204)
        self.pushButton = QtWidgets.QPushButton(ImageDialog)
        self.pushButton.setGeometry(QtCore.QRect(200, 160, 75, 23))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(ImageDialog)
        QtCore.QMetaObject.connectSlotsByName(ImageDialog)

    def retranslateUi(self, ImageDialog):
        _translate = QtCore.QCoreApplication.translate
        ImageDialog.setWindowTitle(_translate("ImageDialog", "Dialog"))
        self.pushButton.setText(_translate("ImageDialog", "PushButton"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    ImageDialog = QtWidgets.QDialog()
    ui = Ui_ImageDialog()
    ui.setupUi(ImageDialog)
    ImageDialog.show()
    sys.exit(app.exec_())

感谢任何建设性的帮助。

【问题讨论】:

    标签: python qt pyqt pyqt5 qt-designer


    【解决方案1】:

    Qt Designer 用于创建图形部分,但不用于逻辑,您必须根据您在设计中使用的小部件创建逻辑部分。在你的情况下,我认为它是QDialog

    from ui_imagedialog import Ui_ImageDialog
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class ImageDialog(QtWidgets.QDialog, Ui_ImageDialog):
        def __init__(self, parent=None):
          super(ImageDialog, self).__init__(parent=parent)
          self.setupUi(self)
    
          self.pushButton.clicked.connect(self.accept)
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        w = ImageDialog()
        w.show()
        sys.exit(app.exec_())
    

    观察:ui_imagedialog.py文件中没有ImageDialog类,只有Ui_ImageDialog类,所以我产生了错误。同样在设计中,该按钮称为self.pushButton,,因此您不能将其称为self.okButton

    【讨论】:

    • PyQt3 是 PyQt 的旧版本,我没有机会使用它。但是这个例子很容易重现。如果我的回答可以帮助您将其标记为正确,请。
    • 不是pyqt的一部分,是Qt Designer生成的,分析一下就可以实现图形部分的设计。
    猜你喜欢
    • 2014-07-22
    • 2019-03-24
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多