0

我写了这2段代码:

  1. 创建一个继承自 wx.frame 的类 Myframe 并创建一个 App,它可以正常工作。

代码1.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.py

import wx

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

app.MainLoop()

有几件事不能作为代码 1 工作。

  1. 窗口立即关闭。
  2. SetTopWindow 不工作..它说未声明的变量...这是正确的..但是我如何引用 SetTopWindow ?
4

1 回答 1

2

窗口立即关闭,因为代码有问题。如您所知,SetTopWindow 没有定义,但还有另一个问题。Frame 没有 show() 方法。它有一个 Show() 方法。注意大小写的不同。如果您查看第一个代码示例,您将看到您正在调用应用程序对象的 SetTopWindow() 方法。您也只需要在这里执行此操作:

import wx

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

app.MainLoop()
于 2012-08-30T19:16:23.110 回答