Python继承问题 - 以不同方式调用对象

时间:2012-08-30 19:09:33

标签: wxpython

我写了两段代码:

  1. 创建一个继承自wx.frame并创建应用程序的Myframe类,它可以正常工作。
  2. code1.py

    import wx
    class MyApp(wx.App):
        def OnInit(self):
            self.frame = MyFrame(None,title="MyFrame")
            self.SetTopWindow(self.frame)
            self.frame.Show()
            return True
    
    class MyFrame(wx.Frame):
        def __init__(self,*args,**kwargs):
            super(MyFrame,self).__init__(*args,**kwargs)
    
            self.CreateStatusBar()
            self.SetStatusText("Initializing")
            self.CreateToolBar()
    
    if __name__ == "__main__":
        app = MyApp(False)
        app.MainLoop()
    
    1. 现在,我尝试直接调用wx.App
    2. 创建一个重写

      code2.py

      import wx
      
      app = wx.App()
      frame = wx.Frame(None,-1,"Test")
      SetTopWindow(frame)
      frame.show()
      
      app.MainLoop()
      

      有些事情不像代码1那样工作。

      1. 窗口立即关闭。
      2. SetTopWindow无效。它说未声明的变量......那是正确的..但我如何引用SetTopWindow?

1 个答案:

答案 0 :(得分:2)

窗口立即关闭,因为代码有问题。如您所知,SetTopWindow未定义,但还有另一个问题。 Frame没有show()方法。它有一个Show()方法。注意资本化的差异。如果你看第一个代码示例,你会看到你正在调用app对象的SetTopWindow()方法。你也需要在这里做到这一点:

import wx

app = wx.App()
frame = wx.Frame(None,-1,"Test")
app.SetTopWindow(frame)
frame.Show()

app.MainLoop()