XRC Dateien in einem ZIP Archiv

Plattformunabhängige GUIs mit wxWidgets.
Antworten
gras78ix
User
Beiträge: 9
Registriert: Samstag 4. August 2007, 11:35

Samstag 4. August 2007, 12:00

Ich benötige etwas Hilfe:

Ich habe zunächst ein xrc-File erstellt mit einem mini-Frame drin. Den PythonCode zum Laden des Frame habe ich aus einem Tutorial und hat daher ohne weiteres funktioniert.

Dann habe ich in C++ eine Applikation geschrieben, die dasselbe macht, mit dem Unterschied, dass sich die XRC Datei in einem Zip-Archiv war. In C++ kein Problem.

Nun habe ich diesen C++ Code in Python "Übersetzt" und der LoadFrame
Aufruf schlägt fehl. Der Load Aufruf vom XmlResource lieferte aber True.

Kann mir jemand helfen???????

PythonCode:

Code: Alles auswählen

class Appl(wx.App):
   def OnInit(self):
      self.res = xrc.XmlResource().Get()
      self.res.InitAllHandlers()
      wx.FileSystem.AddHandler(wx.ZipFsHandler())
      url = wx.FileSystem.FileNameToURL("MyRes.zip#zip*.xrc")
      ok = self.res.Load(url)
      self.frame = self.res.LoadFrame(None, "MeinMainFenster")
      self.frame.Show()

Die XRC-Datei besteht nur aus einem Minimum-Eintrag;
<?xml version="1.0" encoding="UTF-8"?>
<resource version="2.3.0.1" xmlns=".......">
<object class="wxFrame" name="MeinMainFenster">
<size>800,600</size>
<title>Hallo</title>
....ende
gras78ix
User
Beiträge: 9
Registriert: Samstag 4. August 2007, 11:35

Mittwoch 8. August 2007, 15:48

der Code funktioniert doch perfekt - nur muss das zip Archiv auch an der richtigen Stelle sein und vor allen Dingen: Darf in der XML-Datei keine subclass wenn im Pythoncode so eine Klasse nicht exisitiert !!!
gras78ix
User
Beiträge: 9
Registriert: Samstag 4. August 2007, 11:35

Donnerstag 20. Dezember 2007, 16:09

self.m_XmlResource = xrc.XmlResource.Get()
self.m_XmlResource.InitAllHandlers()
wx.FileSystem.AddHandler(wx.ZipFSHandler())
url = wx.FileSystem.FileNameToURL("MeinXRC.zip")
ok = self.m_XmlResource.Load(url)
self.m_MainFrame = self.m_XmlResource.LoadFrame(None, "Id_MainWindow")
self.m_MainFrame.Center()
Antworten