wxPython code giving strange errors.

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • teh_sAbEr

    wxPython code giving strange errors.

    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.F rame):
    def __init__(self,p arent,id,title) :
    wx.Frame.__init __(self,parent, wx.ID_ANY,title ,size=(200,100) )
    self.control = wx.TextCtrl(sel f,1,style=wx.TE _MULTILINE)
    self.CreateStat usBar()

    filemenu = wx.Menu()
    filemenu.Append (ID_ABOUT,"&Abo ut"," Information about this
    program.")
    filemenu.Append Separator()
    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:\Documen ts 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:\Documen ts 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\Li b\site-packages\wx-2.8-msw-unicode\wx
    \_windows.py", line 501, in __init__
    _windows_.Frame _swiginit(self, _windows_.new_F rame(*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?
  • Thin Myrna

    #2
    Re: wxPython code giving strange errors.

    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.F rame):
    def __init__(self,p arent,id,title) :
    wx.Frame.__init __(self,parent, wx.ID_ANY,title ,size=(200,100) )
    self.control = wx.TextCtrl(sel f,1,style=wx.TE _MULTILINE)
    self.CreateStat usBar()
    >
    filemenu = wx.Menu()
    filemenu.Append (ID_ABOUT,"&Abo ut"," Information about this
    program.")
    filemenu.Append Separator()
    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:\Documen ts 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:\Documen ts 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\Li b\site-packages\wx-2.8-msw-unicode\wx
    \_windows.py", line 501, in __init__
    _windows_.Frame _swiginit(self, _windows_.new_F rame(*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.Sho w( True)
    self.SetTopWind ow( self._frame)
    return True


    def Run():
    app = App()
    app.MainLoop()


    if __name__ == '__main__':
    Run()


    HTH
    Thin

    Comment

    • Mike Driscoll

      #3
      Re: wxPython code giving strange errors.

      On Jul 13, 10:18 am, teh_sAbEr <teh.sa...@gmai l.comwrote:
      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.F rame):
          def __init__(self,p arent,id,title) :
              wx.Frame.__init __(self,parent, wx.ID_ANY,title ,size=(200,100) )
              self.control = wx.TextCtrl(sel f,1,style=wx.TE _MULTILINE)
              self.CreateStat usBar()
      >
              filemenu = wx.Menu()
              filemenu.Append (ID_ABOUT,"&Abo ut"," Information about this
      program.")
              filemenu.Append Separator()
              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:\Documen ts 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:\Documen ts 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\Li b\site-packages\wx-2.8-msw-unicode\wx
      \_windows.py", line 501, in __init__
          _windows_.Frame _swiginit(self, _windows_.new_F rame(*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?
      This code works "as is" on Windows XP. However, I have gotten this
      error when trying to run it from IDLE and I've heard that that can
      happen in other Tkinter-based IDEs. Try running it from the command
      line and I'll bet you won't get that error.

      Also, there's a great wxPython user's group you can join from the
      official website:

      All about wxPython, the cross-platform GUI toolkit for the Python language


      Mike

      Comment

      • David C. Ullrich

        #4
        Re: wxPython code giving strange errors.

        In article
        <c21e91f7-2feb-4dbc-96ab-05110e3b2127@34 g2000hsh.google groups.com>,
        Mike Driscoll <kyosohma@gmail .comwrote:
        On Jul 13, 10:18 am, teh_sAbEr <teh.sa...@gmai l.comwrote:
        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
        [...]

        app = wx.PySimpleApp( )
        frame = MainWindow(None , -1, "Sample editor")
        app.MainLoop()
        [...]
        >
        This code works "as is" on Windows XP. However, I have gotten this
        error when trying to run it from IDLE and I've heard that that can
        happen in other Tkinter-based IDEs.
        So I've heard. Just for fun I tried running it in a wxPython-based
        shell - it worked fine.
        Try running it from the command
        line and I'll bet you won't get that error.
        >
        Also, there's a great wxPython user's group you can join from the
        official website:
        >
        All about wxPython, the cross-platform GUI toolkit for the Python language

        >
        Mike
        --
        David C. Ullrich

        Comment

        Working...