====== レイアウト配置 ======
各パーツの配列は、Sizer を使う。
* wx.BoxSizer
* wx.GridSizer
* wx.FrexGridSizer
----
===== BoxSizer の例 =====
import os
import sys
import wx
class Panel1(wx.Panel) :
def __init__(self, parent, *args, **kwargs) :
wx.Panel.__init__(self, parent, wx.ID_ANY)
b1a = self.SetButton("Button1-A")
b1b = self.SetButton("Button1-B")
layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(b1a, 2, flag=wx.EXPAND)
layout.Add(b1b, 1, flag=wx.EXPAND)
self.SetSizer(layout)
def SetButton(self, Name) :
return wx.Button(self, wx.ID_ANY, Name)
class Panel2(wx.Panel) :
def __init__(self, parent, *args, **kwargs) :
wx.Panel.__init__(self, parent, wx.ID_ANY)
b2a = self.SetButton("Button2-A")
b2b = self.SetButton("Button2-B")
b2c = self.SetButton("Button2-C")
bp1 = Panel1(self)
layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(b2a, 3, flag=wx.EXPAND)
layout.Add(b2b, 2, flag=wx.EXPAND)
layout.Add(b2c, 4, flag=wx.EXPAND)
layout.Add(bp1, 1, flag=wx.EXPAND)
self.SetSizer(layout)
def SetButton(self, Name) :
return wx.Button(self, wx.ID_ANY, Name)
class IntegratePanel(wx.Panel) :
def __init__(self, parent, *args, **kwargs) :
wx.Panel.__init__(self, parent, wx.ID_ANY)
bp1 = Panel1(self)
bp2 = Panel2(self)
layout = wx.BoxSizer(wx.HORIZONTAL)
layout.Add(bp1, 3, flag=wx.EXPAND)
layout.Add(bp2, 2, flag=wx.EXPAND)
self.SetSizer(layout)
class MainFrame(wx.Frame) :
def __init__(self) :
super().__init__(None, title="Sizer")
self.SetSize(1000,1000)
self.SetMinSize((500, 500))
self.Center(wx.BOTH)
IntegratePanel(self)
self.Show()
def main() :
app = wx.App()
frame = MainFrame()
app.MainLoop()
return
if __name__ == '__main__' :
main()
===== 自動サイズ調整 =====
wx.EXPAND でサイズ調整される
layout = wx.BoxSizer(wx.HORIZONTAL)
layout.Add(button, 1, wx.EXPAND)
# 0: サイズ変更なし
# 1: 自動調整あり。数字は、比率。
import os
import sys
import wx
class Panel(wx.Panel) :
def __init__(self, parent, *args, **kwargs) :
wx.Panel.__init__(self, parent, wx.ID_ANY)
button4 = wx.Button(self, wx.ID_ANY, 'only vertical exapnd', name='button4', size=(200, 50))
layout = wx.BoxSizer(wx.HORIZONTAL)
layout.Add(button4, 0, wx.EXPAND)
self.SetSizer(layout)
class TopPanel(wx.Panel) :
def __init__(self, parent, *args, **kwargs) :
wx.Panel.__init__(self, parent, wx.ID_ANY)
button1 = wx.Button(self, wx.ID_ANY, 'ogriginal Size', name='button1', size=(200, 50))
button2 = wx.Button(self, wx.ID_ANY, 'both vertical and horizontal expand', name='button2', size=(200, 50))
button3 = wx.Button(self, wx.ID_ANY, 'only horizontal exapnd', name='button3', size=(200, 50))
p = Panel(self, wx.ID_ANY)
layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(button1, 0)
layout.Add(button2, 1, flag=wx.EXPAND)
layout.Add(button3, 0, flag=wx.EXPAND)
layout.Add(p, 1, flag=wx.EXPAND)
self.SetSizer(layout)
class MainFrame(wx.Frame) :
def __init__(self, *args, **kwargs) :
super().__init__(None, title="exFrame", **kwargs)
topPanel = TopPanel(self)
layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(topPanel, 1, flag=wx.EXPAND)
self.SetSizer(layout)
self.SetSize(500,500)
self.SetMinSize((100, 100))
self.Center(wx.BOTH)
self.Show()
def main() :
app = wx.App()
MainFrame()
app.MainLoop()
return
if __name__ == '__main__' :
main()