wxpython嵌套panel布局的一个问题

最近在学习使用wxpython,想通过panel来分出不同的区块来进行单独布局

却发现,当我在panel中嵌套了一个panel,在这个嵌套的panel中使用boxsizer进行布局没有效果

代码如下:

import wx
app = wx.App()
frame = wx.Frame(None,wx.ID_ANY, 'simple.py')
panel = wx.Panel(frame,wx.ID_ANY)
boxsizer = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(boxsizer)
button1 = wx.Button(panel,wx.ID_ANY,'aaaaa')
button2 = wx.Button(panel,wx.ID_ANY,'bbbbb')
boxsizer.Add(button1)
boxsizer.Add(button2)
panel2 = wx.Panel(panel,wx.ID_ANY,style=wx.BORDER_DOUBLE,size = wx.Size(300,300))
panel2.SetBackgroundColour('#00ff00')
boxsizer.Add(panel2)

boxsizer2 = wx.BoxSizer(wx.VERTICAL)
panel2.SetSizer(boxsizer)
button3 = wx.Button(panel2,wx.ID_ANY,'ccccc')
button4 = wx.Button(panel2,wx.ID_ANY,'ddddd')
boxsizer2.Add(button3)
boxsizer2.Add(button4)

frame.Show()
app.MainLoop()

运行结果:

发现按钮 C 覆盖在了按钮 D的上方,如果布局起作用的话,按钮 D 应该在 B 的下方才对

这说明了wxpython在嵌套panel里的布局是没有效果的

但是自己又希望在这个嵌套的panel里有新的布局,该怎么做呢,我想到的办法是使用绝对布局:

import wx
app = wx.App()
frame = wx.Frame(None,wx.ID_ANY, 'simple.py')
panel = wx.Panel(frame,wx.ID_ANY)
boxsizer = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(boxsizer)
button1 = wx.Button(panel,wx.ID_ANY,'aaaaa')
button2 = wx.Button(panel,wx.ID_ANY,'bbbbb')
boxsizer.Add(button1)
boxsizer.Add(button2)

panel2 = wx.Panel(panel,wx.ID_ANY,style=wx.BORDER_DOUBLE,size = wx.Size(300,300))
panel2.SetBackgroundColour('#00ff00')
boxsizer.Add(panel2)
button3 = wx.Button(panel2,wx.ID_ANY,'ccccc')
button4 = wx.Button(panel2,wx.ID_ANY,'ddddd',pos = wx.Point(0,30))

frame.Show()
app.MainLoop()

运行结果如下:

这样 D 按钮就在 C的下方了


当然这个方法暂时能解决嵌套布局的一个问题,如果有其他更好的方法也希望能与大家进行交流

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值