"Name.qrc" импортируется, но в моем приложении нет фона - PullRequest
0 голосов
/ 25 апреля 2019

Я работал над пользовательским интерфейсом для моего приложения, использующего PyQt's Designer.exe, и он выдавал мне файлы .ui и .qrc для каждого пользовательского интерфейса. Проблема заключается в том, что каждый раз, когда я пытаюсь запустить его, он превращается в код Python.в приложении нет ошибок, но фон моего приложения серый, несмотря на то, что файл .qrc (сейчас он является .py) импортирован и файл .jpg существует в каталоге.

Я попытался изменить формат изображения или создать другой файл .qrc, но это не помогло. Я также попытался создать другие пользовательские интерфейсы, и он снова не работал.

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(550, 400)
        Form.setStyleSheet(_fromUtf8("background-image: url(:/newPrefix/Arabic.jpg);"))
        self.label = QtGui.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(240, 10, 81, 81))
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("IranNastaliq"))
        font.setPointSize(16)
        self.label.setFont(font)
        self.label.setObjectName(_fromUtf8("label"))
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(70, 260, 181, 101))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
        self.pushButton.setPalette(palette)
        font = QtGui.QFont()
        font.setPointSize(10)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton_2 = QtGui.QPushButton(Form)
        self.pushButton_2.setGeometry(QtCore.QRect(300, 260, 181, 101))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
        self.pushButton_2.setPalette(palette)
        font = QtGui.QFont()
        font.setPointSize(10)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))

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

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "عربي", None))
        self.label.setText(_translate("Form", "<html><head/><body><p align=\"center\"><span style=\" font-size:22pt; color:#ffffff;\">عربی</span></p></body></html>", None))
        self.pushButton.setText(_translate("Form", "صرف افعال عربی", None))
        self.pushButton_2.setText(_translate("Form", "باب های ثلاثی مزید", None))

import Arabic_rc

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Form = QtGui.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

Таким образом, «Arabic_rc» импортируется, но он бесполезен.

Это то, что содержит файлы My Arabic.qrc:

<RCC>
  <qresource prefix="newPrefix">
    <file>Arabic.jpg</file>
    <file>Arabic.jpg</file>
  </qresource>
</RCC>

Это то, что я получаю после запускамой код

Это то, что я ожидаю, в соответствии с предварительным просмотром в Desigber.exe

Это арабский язык.jpg

Теперь у меня есть пара таких окон, которые все работают так, спасибо за ваше время.

1 Ответ

0 голосов
/ 26 апреля 2019

С помощью @eyllanesc я смог это исправить.Моя проблема заключалась в том, что я использовал PyQt4, который вместо этого я должен был использовать PyQt5, чтобы конвертировать .ui и .qrc в файлы .py.

открыть cmd и перейти в каталог PyQt5 и:

для типа файла .ui:

pyuic5 -x uiname.ui -o uiname.py

для типа файла .qrc:

pyrcc5 qrcname.ui -o qrcname_rc.py
...