【问题标题】:Image does not display on Pyqt [duplicate]图像不显示在 Pyqt [重复]
【发布时间】:2022-11-13 14:24:31
【问题描述】:

我正在使用 Pyqt5、python3.9 和 windows 11。我正在尝试将图像添加到我的应用程序中,但它不会显示任何内容,如下所示。

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(531, 316)
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(70, 30, 491, 241))
        self.label.setText("")
        self.label.setPixmap(QtGui.QPixmap(":/newPrefix/download.png"))
        self.label.setObjectName("label")

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

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


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())][1]

我的应用程序

这是我的 qrc 文件:

<RCC>
  <qresource prefix="newPrefix">
    <file>download.png</file>
    <file>background.gif</file>
  </qresource>
</RCC>

并且图像和 main.py 都在同一个目录中。知道为什么这不起作用吗?

编辑:该代码似乎适用于 Windows 10,但不适用于 Windows 11。

【问题讨论】:

    标签: python qt pyqt pyqt5 qt-designer


    【解决方案1】:

    您应该首先使用 pyrcc5 并将您的 qrc 转换为 .py

    例如,我这样做:

    pyrcc5 resourse.qrc -o logo_rc.py
    

    那么你应该导入它:

    from PyQt5 import QtCore, QtGui, QtWidgets
    
    import logo_rc
    
    class Ui_Dialog(object):
        def setupUi(self, Dialog):
            Dialog.setObjectName("Dialog")
            Dialog.resize(550, 600)
            self.label = QtWidgets.QLabel(Dialog)
            self.label.setGeometry(QtCore.QRect(0, 0, 550, 600))
            self.label.setText("")
            self.label.setPixmap(QtGui.QPixmap(":/images/images/photos.png"))
            self.label.setObjectName("label")
    
            self.retranslateUi(Dialog)
            QtCore.QMetaObject.connectSlotsByName(Dialog)
    
        def retranslateUi(self, Dialog):
            _translate = QtCore.QCoreApplication.translate
            Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
    
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        Dialog = QtWidgets.QDialog()
        ui = Ui_Dialog()
        ui.setupUi(Dialog)
        Dialog.show()
        sys.exit(app.exec_())
    

    这是我的输出:

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 2016-08-17
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多