wxpythonでパネルを使って終了ボタンを作りたいのですがうまくいきません。
パネルを使わなければ終了ボタンを作れたのですが、panelを使うとうまくいきません。
初心者の独学で醜いコードだと思いますが、どうかよろしくお願いします。
python
1import wx 2 3class MyFrame(wx.Frame): 4 def __init__(self, parent,id, title,size): 5 wx.Frame.__init__(self, parent,id, title=title,size=size) 6 panel = MyPanel(self) 7 self.Show() 8 9class MyPanel(wx.Panel): 10 def __init__(self, parent): 11 wx.Panel.__init__(self, parent) 12 self.__create_widget() 13 self.__do_layout() 14 15 def __create_widget(self): 16 self.text1 = wx.Button(self, label="終了",pos=wx.Point(100, 40)) 17 self.text1.Bind(wx.EVT_BUTTON,self.OnExit) 18 19 self.text2 = wx.TextCtrl(self, id=-1, value='bb') 20 self.text2.SetBackgroundColour('#ff00ff') 21 self.text3 = wx.TextCtrl(self, id=-1, value='cc') 22 self.text3.SetBackgroundColour('red') 23 self.text4 = wx.TextCtrl(self, id=-1, value='dd') 24 self.text4.SetBackgroundColour('pink') 25 26 def __do_layout(self): 27 sizer = wx.GridSizer(rows=2, cols=2, gap=(0, 0)) 28 sizer.Add(self.text1,0) 29 sizer.Add(self.text2,1, wx.EXPAND) 30 sizer.Add(self.text3,1, wx.EXPAND) 31 sizer.Add(self.text4,1, wx.EXPAND) 32 self.SetSizer(sizer) 33 34 def OnExit(self,event): 35 self.Close(True) 36 37if __name__ == '__main__': 38 app = wx.App(False) 39 frame = MyFrame(None, -1,"wxPython",(1000, 1000)) 40 app.MainLoop() 41
以下のようにpanelを使わなければ動作するのですが
python
1import wx 2 3class SampleFrame(wx.Frame): 4 def __init__(self, parent, ID, title): 5 wx.Frame.__init__(self, parent, title=title, size=(1000, 1000)) 6 self.__create_widget() 7 self.__do_layout() 8 def __create_widget(self): 9 self.text = wx.StaticText(self, label="Hello World",pos=wx.Point(100, 15)) 10 self.button = wx.Button(self, label="終了",pos=wx.Point(100, 40)) 11 self.button.Bind(wx.EVT_BUTTON, self.OnExit) 12 def __do_layout(self): 13 sizer = wx.BoxSizer(wx.VERTICAL) 14 sizer.Add(self.text) 15 sizer.Add(self.button) 16 self.SetSizer(sizer) 17 def OnExit(self,event): 18 self.Close(True) 19 20class SampleApp(wx.App): 21 def OnInit(self): 22 frame = SampleFrame(None, -1, "Sample wxPython") 23 self.SetTopWindow(frame) 24 frame.Show(True) 25 return True 26 27if __name__ == '__main__': 28 app = SampleApp() 29 app.MainLoop()

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。