teh_sAbEr wrote: > I'm busy trying to learn wxPython, and i'm trying to run the following > piece of code (its from the wxPyWiki tutorial): > > import wx > > ID_ABOUT = 101 > ID_EXIT = 110 > > class MainWindow(wx.Frame): > def __init__(self,parent,id,title): > wx.Frame.__init__(self,parent,wx.ID_ANY,title,size=(200,100)) > self.control = wx.TextCtrl(self,1,style=wx.TE_MULTILINE) > self.CreateStatusBar() > > filemenu = wx.Menu() > filemenu.Append(ID_ABOUT,"&About"," Information about this > program.") > filemenu.AppendSeparator() > filemenu.Append(ID_EXIT,"E&xit"," Terminate the program.") > > menuBar = wx.MenuBar() > menuBar.Append(filemenu,"&File") > self.SetMenuBar(menuBar) > self.Show(True) > > app = wx.PySimpleApp() > frame = MainWindow(None, -1, "Sample editor") > app.MainLoop() > > Simple enough, but every single time I try to run it IDLE gives me > this instead of the app I was hoping for: > > Traceback (most recent call last): > File "C:\Documents and Settings\Enrico Jr\My Documents\Jr's Crap > \Python Stuff\Batch Picture Converter\main.py", line 24, in <module> > frame = MainWindow(None, -1, "Sample editor") > File "C:\Documents and Settings\Enrico Jr\My Documents\Jr's Crap > \Python Stuff\Batch Picture Converter\main.py", line 9, in __init__ > wx.Frame.__init__(self,parent,wx.ID_ANY,title,size=(200,100)) > File "C:\Python25\Lib\site-packages\wx-2.8-msw-unicode\wx > \_windows.py", line 501, in __init__ > _windows_.Frame_swiginit(self,_windows_.new_Frame(*args, > **kwargs)) > PyNoAppError: The wx.App object must be created first! > > As far as I can tell, the wx.App object IS being created first. I > suspect a race condition of some sort here, but can anyone shed some > light on this?
The main frame has to be created by the app itself, e.g. like so: class App(wx.App): def OnInit(self): self._frame = MainFrame( None, -1, _APP_CAPTION) self._frame.Show( True) self.SetTopWindow( self._frame) return True def Run(): app = App() app.MainLoop() if __name__ == '__main__': Run() HTH Thin -- http://mail.python.org/mailman/listinfo/python-list