QT UI 转换为 python,但图像不会加载

Posted

技术标签:

【中文标题】QT UI 转换为 python,但图像不会加载【英文标题】:QT UI translated to python, but images wont load 【发布时间】:2021-11-18 10:43:35 【问题描述】:

所以我已经使用 pyuic 和 pyrcc 将我的 QT Design 和 QRC 文件转换为 python。 当我导入 QRC 的 python 文件时,它一直说它在代码中未使用。 我猜没有正确使用它,但在任何地方都找不到答案。 如果有人能帮助我理解并正确使用它,我将不胜感激。

from PyQt5 import QtCore, QtGui, QtWidgets
import backgroundPicture


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

        MainWindow.setObjectName("Scanner")
        MainWindow.resize(600, 800)
        MainWindow.setMinimumSize(QtCore.QSize(600, 800))
        MainWindow.setMaximumSize(QtCore.QSize(600, 800))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget)
        self.stackedWidget.setGeometry(QtCore.QRect(0, 60, 601, 741))
        self.stackedWidget.setObjectName("stackedWidget")

        self.pageCreate = QtWidgets.QWidget()
        self.pageCreate.setObjectName("pageCreate")
        self.Background = QtWidgets.QLabel(self.pageCreate)
        self.Background.setGeometry(QtCore.QRect(0, 0, 601, 761))
        self.Background.setStyleSheet("background-image: :/image/LogoAndText.png;\n"
                                        "background-repeat: repeat-x;")
        self.Background.setText("")
        self.Background.setObjectName("Background")
        self.create_buttonScan = QtWidgets.QPushButton(self.pageCreate)
        self.create_buttonScan.setGeometry(QtCore.QRect(0, 110, 601, 91))
        font = QtGui.QFont()
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.create_buttonScan.setFont(font)
        self.create_buttonScan.setStyleSheet("QPushButton \n"
                                             "    background-color: #1E90FF;\n"
                                             "    color: white;\n"
                                             "\n"
                                             "QPushButton:hover \n"
                                             "    background-color:     #00BFFF;\n"
                                             "")
        self.create_buttonScan.setObjectName("")
        self.create_nodeUid = QtWidgets.QTextEdit(self.pageCreate)
        self.create_nodeUid.setGeometry(QtCore.QRect(0, 200, 601, 91))
        self.create_nodeUid.setObjectName("")
        self.create_nodeUid.setDisabled(True)
        self.create_label_1 = QtWidgets.QPushButton(self.pageCreate)
        self.create_label_1.setGeometry(QtCore.QRect(0, 300, 601, 51))
        font = QtGui.QFont()
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.create_label_1.setFont(font)
        self.create_label_1.setStyleSheet("QPushButton \n"
                                          "    background-color: #1E90FF;\n"
                                          "    color: white;\n"
                                          "")
        self.create_label_1.setObjectName("")
        self.create_label_1.setEnabled(False)
        self.create_comboBoxCustomer = QtWidgets.QComboBox(self.pageCreate)
        self.create_comboBoxCustomer.setGeometry(QtCore.QRect(0, 350, 601, 51))
        self.create_comboBoxCustomer.setObjectName("")
        self.create_label_2 = QtWidgets.QPushButton(self.pageCreate)
        self.create_label_2.setGeometry(QtCore.QRect(0, 410, 601, 51))
        font = QtGui.QFont()
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.create_label_2.setFont(font)
        self.create_label_2.setStyleSheet("QPushButton \n"
                                          "    background-color: #1E90FF;\n"
                                          "    color: white;\n"
                                          "")
        self.create_label_2.setObjectName("create_label_2")
        self.create_label_2.setEnabled(False)
        self.create_comboBoxLocation = QtWidgets.QComboBox(self.pageCreate)
        self.create_comboBoxLocation.setGeometry(QtCore.QRect(0, 460, 601, 51))
        self.create_comboBoxLocation.setObjectName("")
        self.create_label_3 = QtWidgets.QPushButton(self.pageCreate)
        self.create_label_3.setGeometry(QtCore.QRect(0, 520, 601, 51))
        font = QtGui.QFont()
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.create_label_3.setFont(font)
        self.create_label_3.setStyleSheet("QPushButton \n"
                                          "    background-color: #1E90FF;\n"
                                          "    color: white;\n"
                                          "")
        self.create_label_3.setObjectName("create_label_3")
        self.create_label_3.setEnabled(False)
        self.create_comboBoxDirection = QtWidgets.QComboBox(self.pageCreate)
        self.create_comboBoxDirection.setGeometry(QtCore.QRect(0, 570, 601, 51))
        self.create_comboBoxDirection.setObjectName("")
        self.create_buttonSubmit = QtWidgets.QPushButton(self.pageCreate)
        self.create_buttonSubmit.setGeometry(QtCore.QRect(150, 650, 300, 71))
        font = QtGui.QFont()
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.create_buttonSubmit.setFont(font)
        self.create_buttonSubmit.setStyleSheet("QPushButton \n"
                                               "    background-color: #34c759;\n"
                                               "    border-radius: 20px;\n"
                                               "    color: white;\n"
                                               "\n"
                                               "\n"
                                               "QPushButton:hover \n"
                                               "    background-color: #30D158;\n"
                                               "")
        self.create_buttonSubmit.setObjectName("")
        self.stackedWidget.addWidget(self.pageCreate)

        MainWindow.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "-"))
        self.create_buttonScan.setText(_translate("MainWindow", "-"))
        self.create_label_1.setText(_translate("MainWindow", ""))
        self.create_label_2.setText(_translate("MainWindow", ""))
        self.create_label_3.setText(_translate("MainWindow", ""))
        self.create_buttonSubmit.setText(_translate("MainWindow", "-"))

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

【问题讨论】:

你在哪里导入文件?请提供minimal reproducible example。另请注意,您没有翻译为python:您 UI和QRC转换为 python;翻译是关于口语和本地化的。 在同一个python文件中 @musicamante 添加了更多代码 背景图像值的格式应为url(path):background-image: url(:/image/LogoAndText.png); 我已将其更改为 = self.Background.setStyleSheet("background-image: url(:/image/LogoAndText.png);\n" "background-repeat: repeat-x;")但它仍然无法正常工作,我收到同样的警告,即导入的 backgroundImage 仍未使用 【参考方案1】:

QRC 文件的转换必须在主脚本中导入,而不是转换后的 UI 文件!谢谢@musicamante!

【讨论】:

以上是关于QT UI 转换为 python,但图像不会加载的主要内容,如果未能解决你的问题,请参考以下文章

Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)

在 Windows 机器中将 Qt Designer(.ui) 文件转换为 python(.py) 可执行文件

如何在qt中加载使用QuiLoader加载的ui文件的类文件

Python Qt GUI设计:将UI文件转换为Python文件的三种妙招(基础篇—2)

如何将 .ui 文件转换为 .jui 文件?

Qt 图像不会显示在按钮中