【问题标题】:How to specify proportions using wxPython's BoxSizer如何使用 wxPython 的 BoxSizer 指定比例
【发布时间】:2021-04-22 08:10:39
【问题描述】:

我想创建一个布局,其中一个 wxPanel 占据 2/3 的窗口,一个占据 1/3 的窗口。我知道如何使它们成为 50/50 或如何指定最小和最大尺寸。但是有没有办法指定占用多少可用空间的比例?

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()

【问题讨论】:

    标签: wxpython wxwidgets


    【解决方案1】:

    sizer 的 proportion 参数将为您控制这一点。

    将proportion 的值更改为其中一个sizer 条目为2,这将使sizer 为该条目分配两倍的空间。

    比例定义了 sizer 的孩子之间的相对大小。在垂直尺寸器中,这会改变高度;在水平尺寸器中,这会改变宽度。

    这里,右侧面板已被修改。

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 2013-07-28
      • 2023-04-01
      • 2020-09-07
      • 2014-12-31
      • 2021-06-14
      相关资源
      最近更新 更多