[PyQt] QFile "Unknown error" when opening file from resource

Elvis Stansvik elvstone at gmail.com
Mon Feb 15 13:49:30 GMT 2016


2016-02-15 14:36 GMT+01:00 Elvis Stansvik <elvstone at gmail.com>:
> Hi all,
>
> I'm trying to load a file from a Qt resource (.qrc).
>
> These are the files contained in the .qrc:
>
> (guipy2)estan at newton:~/orexplore/dev/orexplore.gui$ find resources
> resources
> resources/rock_types
> resources/rock_types/all.txt
> resources/rock_types/igneous.txt
> resources/rock_types/sedimentary.txt
> resources/rock_types/metamorphic.txt
> resources/rock_types.qrc
>
> As can be seen by looking at it:
>
> (guipy2)estan at newton:~/orexplore/dev/orexplore.gui$ cat resources/rock_types.qrc
> <RCC>
>     <qresource prefix="/">
>         <file>rock_types/all.txt</file>
>         <file>rock_types/igneous.txt</file>
>         <file>rock_types/metamorphic.txt</file>
>         <file>rock_types/sedimentary.txt</file>
>     </qresource>
> </RCC>
>
> He's how I generate rock_types_rc.py from it:
>
> (guipy2)estan at newton:~/orexplore/dev/orexplore.gui$ pyrcc5
> resources/rock_types.qrc -o orexplore/gui/resources/rock_types_rc.py
> (guipy2)estan at newton:~/orexplore/dev/orexplore.gui$
>
> And this is how I import and try to use one of the embedded files:
>
> (guipy2)estan at newton:~/orexplore/dev/orexplore.gui$ cat
> orexplore/gui/corelog/view/rock_type.py
> from PyQt5.QtCore import QFile, QIODevice
> from PyQt5.QtWidgets import QStyledItemDelegate, QLineEdit, QCompleter
>
> from orexplore.gui.resources import rock_types_rc
>
>
> class RockTypeDelegate(QStyledItemDelegate):
>
>     def __init__(self, parent=None):
>         super(RockTypeDelegate, self).__init__(parent)
>
>         rockTypes = []
>         rockTypesFile = QFile(':/rock_types/all.txt')
>         rockTypesFile.open(QIODevice.ReadOnly)
>
>         print(rockTypesFile.errorString())
>
>         while not rockTypesFile.atEnd():
>             rockTypes.append(str(rockTypesFile.readLine()))
>
>         self._completer = QCompleter(rockTypes)
>
>     def createEditor(self, parent, option, index):
>         edit = QLineEdit(parent)
>         edit.setCompleter(self._completer)
>
>         return edit
>
> Note how I'm printing the QFile errorString() right after opening the
> file. The result when running the app is:
>
> (guipy2)estan at newton:~/orexplore/dev/orexplore.gui$ python -m orexplore.gui.main
> Unknown error
>
> Anyone know what I'm doing wrong here?

*facepalm*. "Unknown error" is returned if there is no error
apparently. The file opened fine apparently.

Sorry for the noise.

Elvis

>
> Cheers,
> Elvis


More information about the PyQt mailing list