微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 wxPython 的 BoxSizer 指定比例

如何解决如何使用 wxPython 的 BoxSizer 指定比例

我想创建一个布局,其中一个 wxPanel 占据窗口的 2/3s,一个占据窗口的 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))
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,255))
main_sizer.Add(right_panel,0)

frame.Show()
frame.CenterOnScreen()

eng.MainLoop()

解决方法

proportionsizer 参数将为您控制这一点。

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

该比例定义了 sizer 的孩子之间的关系有多大。在垂直 sizer 中,这会改变高度;在水平 sizer 中,这会改变宽度。

enter image description here

此处,右侧面板已修改。

import wx

eng = wx.App()
frame = wx.Frame(parent=None,title='wxPython')

main_panel = wx.Panel(frame)
main_panel.SetBackgroundColour(wx.Colour(255,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,255))
main_sizer.Add(right_panel,2,0)

frame.Show()
frame.CenterOnScreen()

eng.MainLoop()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。