我一直在使用PyQt的Designer.exe为我的应用程序设计UI,它为我提供了每个UI的.ui和.qrc文件。问题是将其转换为python代码后,无论何时我尝试运行该应用程序没有错误,但是尽管导入了.qrc文件(现在是.py),并且目录中存在.jpg文件,但我的应用程序背景还是灰色。
我尝试过更改图像的格式或创建另一个.qrc文件,但效果不佳。我还尝试创建其他UI,但此操作不再起作用。
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>
This is What I get after Running my code
This is What I expect,According to the preview in Desigber.exe
现在,我还有其他几个这样的窗口,它们都正在像这样运行,谢谢您的时间。
答案 0 :(得分:0)
借助@eyllanesc,我可以修复它。我的问题是我正在使用PyQt4,而应该使用PyQt5将.ui和.qrc都转换为.py文件。
打开cmd并转到您的PyQt5目录,然后:
.ui文件类型:
pyuic5 -x uiname.ui -o uiname.py
.qrc文件类型:
pyrcc5 qrcname.ui -o qrcname_rc.py