wxPython 表示部を分離してすっきりしてみる
wxPythonでプログラムをすっきりさせるために、ベースとなるMyWindowクラスにはメニューバーを記述して、windowに表示させるpanelの部分はMyPanelクラスを作る。ちょっとすっきりする。
import wx
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.parent = parent
self.parent.SetBackgroundColour('white')
stext1 = wx.StaticText(self.parent, -1, "stext1",(10,10))
stext2 = wx.StaticText(self.parent, -1, "stext2",(10,30),
(200,-1),wx.ALIGN_CENTER)
stext2.SetForegroundColour('white')
stext2.SetBackgroundColour('green')
class MyWindow(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,"MyTitle",size=(300,200))
status=self.CreateStatusBar()
menubar=wx.MenuBar()
first=wx.Menu()
second=wx.Menu()
first.Append(wx.NewId(),"New Window","This is a new window")
first.Append(wx.NewId(),"Open...","This will open a new window")
menubar.Append(first,"File")
menubar.Append(second,"Edit")
self.SetMenuBar(menubar)
panel=MyPanel(self)
if __name__=='__main__':
app=wx.PySimpleApp()
frame=MyWindow(parent=None,id=-1)
frame.Show()
app.MainLoop()
実行した結果は次のとおり。