def __init__(self): wx.Frame.__init__(self, None, -1, "GridBagSizer Test") # Create the sizer sizer = wx.GridBagSizer(hgap=5, vgap=5) # Create some block windows in a basic grid for col in range(3): for row in range(3): bw = BlockWindow(self, label=labels[row * 3 + col]) sizer.Add(bw, pos=(row, col)) # add a window that spans several rows bw = BlockWindow(self, label="span 3 rows") sizer.Add(bw, pos=(0, 3), span=(3, 1), flag=wx.EXPAND) # add a window that spans all columns bw = BlockWindow(self, label="span all columns") sizer.Add(bw, pos=(3, 0), span=(1, 4), flag=wx.EXPAND) # make the last row and col be stretchable sizer.AddGrowableCol(3) sizer.AddGrowableRow(3) # Tell this window to use the sizer for layout self.SetSizer(sizer) # Change the size of the window to be the minimum # needed by the sizer self.Fit()
def CreateSizerAndWindows(self): sizer = wx.BoxSizer(wx.VERTICAL) for label in labels: bw = BlockWindow(self, label=label, size=(200, 30)) sizer.Add(bw, flag=wx.EXPAND) # Add an item that takes all the free space bw = BlockWindow(self, label="gets all free space", size=(200, 30)) sizer.Add(bw, 1, flag=wx.EXPAND) return sizer
def __init__(self): wx.Frame.__init__(self, None, -1, "GridBagSizer Test") self.panel = wx.Panel(self) sizer = wx.GridBagSizer(hgap=5, vgap=5) for col in range(3): for row in range(3): bw = BlockWindow(self, label=labels[row * 3 + col]) sizer.Add(bw, pos=(row, col)) # add a window that spans several rows bw = BlockWindow(self, label="span 3 rows") sizer.Add(bw, pos=(0, 3), span=(3, 1), flag=wx.EXPAND) self._btn1 = wx.Button(self, wx.ID_ANY, "Click me") self._btn2 = wx.Button(self, wx.ID_ANY, "Click you") sizer.Add(self._btn1, pos=(0, 4)) sizer.Add(self._btn2, pos=(1, 4)) self.self_test_txt = wx.StaticText(self, -1, "my Right Panel") sizer.Add(self.self_test_txt, pos=(2, 4)) # self.button = wx.Button(self, -1, "Hello", pos=(50, 20)) # self.Bind(wx.EVT_BUTTON, self.OnClick, self.button) # self.button.SetDefault() # add a window that spans all columns bw = BlockWindow(self, label="span all columns") sizer.Add(bw, pos=(3, 0), span=(1, 4), flag=wx.EXPAND) # make the last row and col be stretchable sizer.AddGrowableCol(3) sizer.AddGrowableRow(3) # # make three static boxes with windows positioned inside them # box1 = self.MakeStaticBoxSizer("Box 1", labels[0:3]) # box2 = self.MakeStaticBoxSizer("Box 2", labels[3:6]) # box3 = self.MakeStaticBoxSizer("Box 3", labels[6:9]) # # # We can also use a sizer to manage the placement of other # # sizers (and therefore the windows and sub-sizers that they # # manage as well.) # sizer = wx.BoxSizer(wx.HORIZONTAL) # sizer.Add(box1, 0, wx.ALL, 10) # sizer.Add(box2, 0, wx.ALL, 10) # sizer.Add(box3, 0, wx.ALL, 10) # # self.panel.SetSizer(sizer) # sizer.Fit(self) self.SetSizer(sizer) self.Fit()
def __init__(self, makeLarger=False, useExpand=False): wx.Frame.__init__(self, None, -1, "FlexGridSizer Test") if useExpand: flag = wx.EXPAND else: flag = 0 # Create the sizer sizer = wx.FlexGridSizer(rows=3, cols=3, hgap=5, vgap=5) # Create some block windows for label in labels: bw = BlockWindow(self, label=label) sizer.Add(bw, 0, flag) if makeLarger: center = self.FindWindowByName("five") center.SetMinSize((150,50)) sizer.AddGrowableCol(1) sizer.AddGrowableRow(1) # Tell this window to use the sizer for layout self.SetSizer(sizer) # Change the size of the window to be the minimum # needed by the sizer self.Fit()
def __init__(self): wx.Frame.__init__(self, None, -1, "Prepend Grid Sizer") sizer = wx.GridSizer(rows=3, cols=3, hgap=5, vgap=5) for label in labels: bw = BlockWindow(self, label=label) sizer.Prepend(bw, 0, 0) self.SetSizer(sizer) self.Fit()
def __init__(self): wx.Frame.__init__(self, None, -1, "GridBagSizer Test") sizer = wx.GridBagSizer(hgap=5, vgap=5) for col in range(3): for row in range(3): bw = BlockWindow(self, label=labels[row * 3 + col]) sizer.Add(bw, pos=(row, col)) # 跨行 bw = BlockWindow(self, label="span 3 rows") sizer.Add(bw, pos=(0, 3), span=(3, 1), flag=wx.EXPAND) # 跨列 bw = BlockWindow(self, label="span all columns") sizer.Add(bw, pos=(3, 0), span=(1, 4), flag=wx.EXPAND) # 使最后的行和列可增长 sizer.AddGrowableCol(3) sizer.AddGrowableRow(3) self.SetSizer(sizer) self.Fit()
def __init__(self): wx.Frame.__init__(self, None, -1, "GridSizer Resizing") sizer = wx.GridSizer(rows=3, cols=3, hgap=5, vgap=5) for label in labels: bw = BlockWindow(self, label=label) flag = flags.get(label, 0) sizer.Add(bw, 0, flag) self.SetSizer(sizer) self.Fit()
def __init__(self): wx.Frame.__init__(self, None, -1, "GridSizer Test") sizer = wx.GridSizer(rows=3, cols=3, hgap=5, vgap=5) for label in labels: bw = BlockWindow(self, label=label) sizer.Add(bw, 0, 0) center = self.FindWindowByName("five") center.SetMinSize((150, 50)) self.SetSizer(sizer) self.Fit()
def CreateSizerAndWindows(self): # Create the sizer sizer = wx.BoxSizer(wx.HORIZONTAL) # Create some block windows for label in labels: bw = BlockWindow(self, label=label, size=(75, 30)) sizer.Add(bw, flag=wx.EXPAND) return sizer
def __init__(self): wx.Frame.__init__(self, None, -1, 'basic grid sizer') sizer = wx.GridSizer(rows=3, cols=3, hgap=5, vgap=5) for label in labels: bw = BlockWindow(self, label=label) sizer.Add(bw, 0, 0) # 将sizer附加到窗口 self.SetSizer(sizer) # 调整窗口的尺寸以适应子窗口的尺寸 self.Fit()
def MakeStaticBoxSizer(self, boxlabel, itemlabels): # first the static box box = wx.StaticBox(self.panel, -1, boxlabel) # then the sizer sizer = wx.StaticBoxSizer(box, wx.VERTICAL) # then add items to it like normal for label in itemlabels: bw = BlockWindow(self.panel, label=label) sizer.Add(bw, 0, wx.ALL, 2) return sizer
def __init__(self): wx.Frame.__init__(self, None, -1, "GridBagSizer Test") sizer = wx.GridBagSizer(hgap=5, vgap=5) for col in range(3): for row in range(3): bw = BlockWindow(self, label=labels[row * 3 + col]) sizer.Add(bw, pos=(row, col)) # add a window that spans several rows bw = BlockWindow(self, label="span 3 rows") sizer.Add(bw, pos=(0, 3), span=(3, 1), flag=wx.EXPAND) # add a window that spans all columns bw = BlockWindow(self, label="span all columns") sizer.Add(bw, pos=(3, 0), span=(1, 4), flag=wx.EXPAND) # make the last row and col be stretchable sizer.AddGrowableCol(3) sizer.AddGrowableRow(3) self.SetSizer(sizer) self.Fit()
def CreateSizerAndWindows(self): # Create the sizer sizer = wx.BoxSizer(wx.VERTICAL) # Create some block windows for label in labels: bw = BlockWindow(self, label=label, size=(200, 30)) sizer.Add(bw, flag=wx.EXPAND) # Add an item that takes one share of the free space bw = BlockWindow(self, label="gets 1/3 of the free space", size=(200, 30)) sizer.Add(bw, 1, flag=wx.EXPAND) # Add an item that takes 2 shares of the free space bw = BlockWindow(self, label="gets 2/3 of the free space", size=(200, 30)) sizer.Add(bw, 2, flag=wx.EXPAND) return sizer
def __init__(self): wx.Frame.__init__(self, None, -1, "Resizing Flex Grid Sizer") sizer = wx.FlexGridSizer(rows=3, cols=3, hgap=5, vgap=5) for label in labels: bw = BlockWindow(self, label=label) sizer.Add(bw, 0, 0) center = self.FindWindowByName("five") center.SetMinSize((150, 50)) sizer.AddGrowableCol(0, 1) sizer.AddGrowableCol(1, 2) sizer.AddGrowableCol(2, 1) sizer.AddGrowableRow(0, 1) sizer.AddGrowableRow(1, 5) sizer.AddGrowableRow(2, 1) self.SetSizer(sizer) self.Fit()
def MakeStaticBoxSizer(self, boxlabel, itemlabels): # first the static box box = wx.StaticBox(self.panel, -1, boxlabel) # then the sizer sizer = wx.StaticBoxSizer(box, wx.VERTICAL) # then add items to it like normal for label in itemlabels: bw = BlockWindow(self.panel, label=label) sizer.Add(bw, 0, wx.ALL, 2) self._btn1 = wx.Button(self.panel, wx.ID_ANY, "Click me") self._btn2 = wx.Button(self.panel, wx.ID_ANY, "Click you") sizer.Add(self._btn1) sizer.Add(self._btn2) return sizer
def __init__(self): wx.Frame.__init__(self, None, -1, 'basic grid sizer') sizer = wx.FlexGridSizer(rows=3, cols=3, hgap=5, vgap=5) for label in labels: bw = BlockWindow(self, label=label) sizer.Add(bw, 0, 0) # 由name属性获取子窗口 center = self.FindWindowByName('five') center.SetMinSize((150, 50)) # 列扩展 sizer.AddGrowableCol(0, 1) sizer.AddGrowableCol(1, 2) sizer.AddGrowableCol(2, 1) # 行扩展 sizer.AddGrowableRow(0, 0) sizer.AddGrowableRow(1, 5) sizer.AddGrowableRow(2, 1) # 将sizer附加到窗口 self.SetSizer(sizer) # 调整窗口的尺寸以适应子窗口的尺寸 self.Fit()
def __init__(self): wx.Frame.__init__(self, None, -1, "StaticBoxSizer Test") self.panel = wx.Panel(self) # # make three static boxes with windows positioned inside them # box1 = self.MakeStaticBoxSizer("Box 1", labels[0:3]) # box2 = self.MakeStaticBoxSizer("Box 2", labels[3:6]) # box3 = self.MakeStaticBoxSizer("Box 3", labels[6:9]) # # # We can also use a sizer to manage the placement of other # # sizers (and therefore the windows and sub-sizers that they # # manage as well.) # sizer = wx.BoxSizer(wx.HORIZONTAL) # sizer.Add(box1, 0, wx.ALL, 10) # sizer.Add(box2, 0, wx.ALL, 10) # sizer.Add(box3, 0, wx.ALL, 10) # # box = wx.StaticBox(self.panel, -1, boxlabel) # sizer = wx.StaticBoxSizer(box, wx.VERTICAL) # bw = BlockWindow(self.panel, label=label) # sizer.Add(bw, 0, wx.ALL, 2) # self._btn1 = wx.Button(self.panel, wx.ID_ANY, "Click me") # self._btn2 = wx.Button(self.panel, wx.ID_ANY, "Click you") box1 = wx.StaticBox(self.panel, -1, "Box 1", size=(300,200)) # box1_sizer = wx.StaticBoxSizer(box1, wx.HORIZONTAL) box1_sizer = wx.GridSizer(box1, wx.HORIZONTAL) # Add(self, item, int proportion=0, int flag=0, int border=0, # PyObject userData=None) bw1 = BlockWindow(self.panel, label="Block Window 1") box1_sizer.Add(bw1, 0, wx.ALL, border=2, pos=(0,0)) # Add(self, item, int proportion=0, int flag=0, int border=0, # PyObject userData=None rtb = wx.ToggleButton(self.panel, label='red') box1_sizer.Add(rtb, 0, wx.ALL, border=2, pos=(0,1)) box2 = wx.StaticBox(self.panel, -1, "Box 2", size=(300,200)) box2_sizer = wx.StaticBoxSizer(box2, wx.HORIZONTAL) bw2 = BlockWindow(self.panel, label="Block Window 2") box2_sizer.Add(bw2, 0, wx.ALL, 2) # gb_sizer = wx.GridBagSizer(hgap=5, vgap=5) # # _btn1 = wx.Button(self, wx.ID_ANY, "Click me") # # self._btn2 = wx.Button(self, wx.ID_ANY, "Click you") # # # gb_sizer.Add(_btn1, pos=(0, 4)) # bw1 = BlockWindow(self, label="span 3 rows") # gb_sizer.Add(bw1, pos=(0, 3), span=(3, 1), flag=wx.EXPAND) # # self._btn1 = wx.Button(self, wx.ID_ANY, "Click me") # self._btn2 = wx.Button(self, wx.ID_ANY, "Click you") # # gb_sizer.Add(self._btn1, pos=(0, 4)) # gb_sizer.Add(self._btn2, pos=(1, 4)) # self.self_test_txt = wx.StaticText(self, -1, "my Right Panel") # sizer.Add(self.self_test_txt, pos=(2, 4)) gb_sizer = wx.GridBagSizer(hgap=5, vgap=5) gb_sizer.Add(box1_sizer, pos=(0, 1), span=(3, 1), flag=wx.EXPAND) gb_sizer.Add(box2_sizer, pos=(0, 2), span=(3, 1), flag=wx.EXPAND) # gb_sizer.Add(gb_sizer, pos=(0, 3), span=(3, 1), flag=wx.EXPAND) self.panel.SetSizer(gb_sizer) gb_sizer.Fit(self)
def CreateSizerAndWindows(self): sizer = wx.BoxSizer(wx.VERTICAL) for label in labels: bw = BlockWindow(self, label=label, size=(200, 30)) sizer.Add(bw, flag=wx.EXPAND) return sizer