欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

wxpython嵌套panel布局的一个问题

发布时间:2025/3/21 python 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的下方了


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

总结

以上是生活随笔为你收集整理的wxpython嵌套panel布局的一个问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。