2

私は.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 をロードするにはどうすればよいですか? テキストファイルまたは画像のみで可能ですか?

4

2 に答える 2

4

これを試すことができます:

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")
于 2013-02-07T12:30:24.773 に答える
2

何らかの理由で、このコードは機能し、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()
于 2013-09-09T09:58:43.953 に答える