我试过这样做,但这没有帮助。它说MainFrame没有属性onButton1.为什么它说???我该如何解决?
此外,我不明白在wxpython中使用sizer。使用sizer的基础是什么?
如果我很快或短暂地得到答案,它会给我很多帮助。
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.NewId(), "Main")
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.button = wx.Button(self, wx.NewId(), "Open a window")
self.button1 = wx.Button(self, wx.NewId(), "Open another window")
self.sizer.Add(self.button, proportion=0, border=2, flag=wx.ALL)
self.SetSizer(self.sizer)
self.sizer.Add(self.button1, proportion=2, border=4, flag=wx.ALL)
self.SetSizer(self.sizer)
self.Bind(wx.EVT_BUTTON, self.onButton,self.button)
self.Bind(wx.EVT_BUTTON, self.onButton1, self.button1)
self.Layout()
def onButton(self, evt):
frame = NewFrame2(self)
frame.Show(True)
frame.MakeModal(True)
class NewFrame2(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, wx.NewId(), "Child")
panel=wx.Panel(self)
def onButton1(self, evt):
frame = NewFrame(self)
frame.Show(True)
frame.MakeModal(True)
class NewFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, wx.NewId(), "Window")
panel=wx.Panel(self)
class MyApp(wx.App):
def OnInit(self):
frame = MainFrame()
frame.Show(True)
self.SetTopWindow(frame)
return True
app = MyApp(0)
app.MainLoop()
答案 0 :(得分:0)
您需要在onButton1
类中定义MainFrame
,就像使用onButton
方法一样。由于它是在NewFrame2
中定义的,因此该方法超出了范围,无法从MainFrame
类中绑定。