ui-Datei im Resource-Datei
Verfasst: Mittwoch 8. Juli 2015, 04:46
Hallo Leute,
eine Weile lang habe ich es so gehandhabt, dass ich die *.ui-Dateien immer dynamisch geladen habe. Aber da py2exe mit *.ui-Dateien insofern ein Problem hat, dass es diese Dateien nicht mit kopiert beim Erstellen der *.exe-Datei, so dachte ich mir, mache ich es so wie mit den Bild-Dateien. Denn Python-Dateien werden von py2exe weitestgehend ohne Probleme mit kopiert. Ich habe die ui-Dateien in eine Resource-Datei geladen, diese Datei dann mittel pyrcc4-Befehl in eine Python-Datei umgewandelt. Alles prima.
Wir sehe hier, dass die umgewandelte Resource-Datei (hier die ui_rc-Datei) importiert wird. Anschließend wird ui-Datei (create_user.ui) aus einer Resource-Datei geladen. Diese Datei wird dann lesend geöffnet, und anschließend wieder geschlossen. Es klappt alles soweit ganz gut. Nur wenn ich das Fenster ein zweites Mal öffne, dann bekomme ich die unten stehende Fehlermeldung. Das heißt, beim ersten Mal wird das Fenster ordnungsgemäß geöffnet. Ich schließe das Fenster, und versuche es gleich nochmal zu öffnen, und dann bekomme ich diese Fehlermeldung.
Die Fehlermeldung sieht wie folgt aus:
eine Weile lang habe ich es so gehandhabt, dass ich die *.ui-Dateien immer dynamisch geladen habe. Aber da py2exe mit *.ui-Dateien insofern ein Problem hat, dass es diese Dateien nicht mit kopiert beim Erstellen der *.exe-Datei, so dachte ich mir, mache ich es so wie mit den Bild-Dateien. Denn Python-Dateien werden von py2exe weitestgehend ohne Probleme mit kopiert. Ich habe die ui-Dateien in eine Resource-Datei geladen, diese Datei dann mittel pyrcc4-Befehl in eine Python-Datei umgewandelt. Alles prima.
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import os
import sys
from PyQt4.QtCore import Qt, QFile
from PyQt4.uic import loadUi
from PyQt4.QtGui import QDialog
from xarphus.gui import ui_rc
BASE_PATH = os.path.dirname(os.path.abspath(__file__))
#UI_PATH = os.path.join(BASE_PATH, 'gui', 'create_user.ui')
UI_PATH = QFile(":/ui_file/create_user.ui")
class CreateUser_Window(QDialog):
def __init__(self, parent):
QDialog.__init__(self, parent)
[...]
UI_PATH.open(QFile.ReadOnly)
self.ui_create_user = loadUi(UI_PATH, self)
UI_PATH.close()
[...]
Die Fehlermeldung sieht wie folgt aus:
Kann mir jemand bitte sagen, was ich falsch mache? Was übersehe ich hier?Traceback (most recent call last):
File "D:\Dan\Python\xarphus\xarphus\frm_mdi.py", line 359, in create_update_form
self.update_form = Update_Window(self)
File "D:\Dan\Python\xarphus\xarphus\frm_update.py", line 135, in __init__
self.ui_update = loadUi(UI_PATH, self)
File "C:\Python27\lib\site-packages\PyQt4\uic\__init__.py", line 238, in loadUi
return DynamicUILoader(package).loadUi(uifile, baseinstance, resource_suffix)
File "C:\Python27\lib\site-packages\PyQt4\uic\Loader\loader.py", line 71, in loadUi
return self.parse(filename, resource_suffix, basedir)
File "C:\Python27\lib\site-packages\PyQt4\uic\uiparser.py", line 984, in parse
document = parse(filename)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1182, in parse
tree.parse(source, parser)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 657, in parse
self._root = parser.close()
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1654, in close
self._raiseerror(v)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1506, in _raiseerror
raise err
xml.etree.ElementTree.ParseError: no element found: line 1, column 0