wxPythonのGUIをxrcのLOADが突然絶対パスでないと出来なくなっている。。。
wxFormBuilderで作ったxrcをLoadするのに、相対パスだと失敗するようになった。。。orz
同階層に置いてるんですが。。。誰かハマったことないですかー(T T)
NGの場合
#!/usr/bin/local/python # -*- coding: utf-8 -*- import wx # Always import wx before from wx import xrc # any other wxPython packages, from wx import html # just to be on the safe side GUI_FILENAME = "gui.xrc" GUI_MAINFRAME_NAME = "mainFrame" class MyApp(wx.App): def OnInit(self): self.res = xrc.XmlResource(GUI_FILENAME) self.frame = self.res.LoadFrame(None, GUI_MAINFRAME_NAME) print(self.frame) self.frame.Show() return True if __name__ == '__main__': # use MyApp(0) if you don't want to redirect stdout/stderr app = MyApp() app.MainLoop()
実行すると。。。LoadFrameの後のprintでNoneが返ってくるようになりました。。。
AttributeError: 'NoneType' object has no attribute 'FindWindowById'
暫定対策
#!/usr/bin/local/python # -*- coding: utf-8 -*- import wx # Always import wx before from wx import xrc # any other wxPython packages, from wx import html # just to be on the safe side GUI_FILENAME = "c:\\hogehoge\\gui.xrc" #FullPathのみ GUI_MAINFRAME_NAME = "mainFrame" class MyApp(wx.App): def OnInit(self): self.res = xrc.XmlResource(GUI_FILENAME) self.frame = self.res.LoadFrame(None, GUI_MAINFRAME_NAME) print(self.frame) self.frame.Show() return True if __name__ == '__main__': # use MyApp(0) if you don't want to redirect stdout/stderr app = MyApp() app.MainLoop()
コード追いかけていたけど、よくLoadされない原因がわからない。。。
誰かご存じないですか?相対でも動くときがあるんです。。。 orz
(というか昨日まで、相対パスだったんです。。。)