我有.qrc文件:
<RCC>
<qresource prefix="/files">
<file alias='icon'>../icons/Delta.jpg</file>
<file alias='eng'>../Languages/English.txt</file>
</qresource>
</RCC>
我用pyrcc4编译成Python python_rc.py文件。在我的代码中,我有:
import QtGui, python_rc
...
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(':/files/icon'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.setWindowIcon(icon)
...
text = codecs.open(':/files/eng', 'r', "utf-8")
...图标加载没有问题,但对于txt文件,我得到:
IOError: [Errno 22] invalid mode ('rb') or filename: ':/files/eng'
所以我的问题是:如何从python_rc加载eng?是文本文件还是仅用于图片?
答案 0 :(得分:3)
你可以试试这个:
fd = QtCore.QFile(":/files/eng")
if fd.open(QtCore.QIODevice.ReadOnly | QtCore.QFile.Text):
text = QtCore.QTextStream(fd).readAll()
fd.close()
因为txt文件在Qt资源文件中,所以你不能使用它:
text = codecs.open(':/files/eng', 'r', "utf-8")
答案 1 :(得分:1)
出于某种原因,这段代码有效,并且没有我在zoumi的回答中提到的问题:
path = ":/languages/eng"
f = QtCore.QFile(path)
if f.open(QtCore.QIODevice.ReadOnly | QtCore.QFile.Text):
text = QtCore.QTextStream(f)
while not text.atEnd():
line = unicode(QtCore.QString(text.readLine()))
#do something with "line" here
f.close()