如何使用 wxPython 的 BoxSizer 指定比例
How to specify proportions using wxPython's BoxSizer
我想创建一个布局,其中一个 wxPanel 占据 window 的 2/3,另一个占据 window 的 1/3。我知道如何将它们设为 50/50 或如何指定最小和最大尺寸。但是有没有办法指定可用space占用的比例?
import wx
eng = wx.App()
frame = wx.Frame(parent=None, title='wxPython')
main_panel = wx.Panel(frame)
main_panel.SetBackgroundColour(wx.Colour(255,0,0))
main_sizer = wx.BoxSizer(wx.HORIZONTAL)
main_panel.SetSizer(main_sizer)
left_panel = wx.Panel(main_panel)
left_panel.SetBackgroundColour(wx.Colour(0,255,0))
main_sizer.Add(left_panel, 1, wx.ALL | wx.EXPAND, 0)
right_panel = wx.Panel(main_panel)
right_panel.SetBackgroundColour(wx.Colour(0,0,255))
main_sizer.Add(right_panel, 1, wx.ALL | wx.EXPAND, 0)
frame.Show()
frame.CenterOnScreen()
eng.MainLoop()
sizer
的 proportion
参数将为您控制。
将 sizer 条目之一的 proportion
值更改为 2,这将使 sizer
分配给该条目的 space 两倍。
The proportion defines how large the sizer’s children are in relation to each other. In a vertical sizer, this changes the height; in a horizontal sizer, this changes the width.
此处,右侧面板已修改。
import wx
eng = wx.App()
frame = wx.Frame(parent=None, title='wxPython')
main_panel = wx.Panel(frame)
main_panel.SetBackgroundColour(wx.Colour(255,0,0))
main_sizer = wx.BoxSizer(wx.HORIZONTAL)
main_panel.SetSizer(main_sizer)
left_panel = wx.Panel(main_panel)
left_panel.SetBackgroundColour(wx.Colour(0,255,0))
main_sizer.Add(left_panel, 1, wx.ALL | wx.EXPAND, 0)
right_panel = wx.Panel(main_panel)
right_panel.SetBackgroundColour(wx.Colour(0,0,255))
main_sizer.Add(right_panel, 2, wx.ALL | wx.EXPAND, 0)
frame.Show()
frame.CenterOnScreen()
eng.MainLoop()
我想创建一个布局,其中一个 wxPanel 占据 window 的 2/3,另一个占据 window 的 1/3。我知道如何将它们设为 50/50 或如何指定最小和最大尺寸。但是有没有办法指定可用space占用的比例?
import wx
eng = wx.App()
frame = wx.Frame(parent=None, title='wxPython')
main_panel = wx.Panel(frame)
main_panel.SetBackgroundColour(wx.Colour(255,0,0))
main_sizer = wx.BoxSizer(wx.HORIZONTAL)
main_panel.SetSizer(main_sizer)
left_panel = wx.Panel(main_panel)
left_panel.SetBackgroundColour(wx.Colour(0,255,0))
main_sizer.Add(left_panel, 1, wx.ALL | wx.EXPAND, 0)
right_panel = wx.Panel(main_panel)
right_panel.SetBackgroundColour(wx.Colour(0,0,255))
main_sizer.Add(right_panel, 1, wx.ALL | wx.EXPAND, 0)
frame.Show()
frame.CenterOnScreen()
eng.MainLoop()
sizer
的 proportion
参数将为您控制。
将 sizer 条目之一的 proportion
值更改为 2,这将使 sizer
分配给该条目的 space 两倍。
The proportion defines how large the sizer’s children are in relation to each other. In a vertical sizer, this changes the height; in a horizontal sizer, this changes the width.
此处,右侧面板已修改。
import wx
eng = wx.App()
frame = wx.Frame(parent=None, title='wxPython')
main_panel = wx.Panel(frame)
main_panel.SetBackgroundColour(wx.Colour(255,0,0))
main_sizer = wx.BoxSizer(wx.HORIZONTAL)
main_panel.SetSizer(main_sizer)
left_panel = wx.Panel(main_panel)
left_panel.SetBackgroundColour(wx.Colour(0,255,0))
main_sizer.Add(left_panel, 1, wx.ALL | wx.EXPAND, 0)
right_panel = wx.Panel(main_panel)
right_panel.SetBackgroundColour(wx.Colour(0,0,255))
main_sizer.Add(right_panel, 2, wx.ALL | wx.EXPAND, 0)
frame.Show()
frame.CenterOnScreen()
eng.MainLoop()