wxpython Gridsizer不适合平底锅

2024-10-01 11:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发wxpythongui。我有三个面板(两个在左边水平分割,一个在右边从另外两个垂直分割——想象一下左半边有两个正方形,右半部分是高矩形)。我正在尝试在面板3中安装网格大小调整器(图中的P3)。我似乎无法让网格面板“填充”整个面板3。相反,它们会弹到顶部和底部。理想情况下,我希望10个小面板(2行,5列)调整大小并填充面板3很好(所有大小相同,大到可以看到每个)。我做错什么了?谢谢!在

****编辑**** 我已将代码更改为如下所示:

        sizer_31 = wx.BoxSizer(wx.VERTICAL)
        gs = wx.GridSizer(0,4,7,7)

        for i in self.Panel_Others.keys():
            gs.Add(self.Panel_Others[i],0,wx.ALIGN_CENTER|wx.ALL,5)

        sizer_31.Add(gs,0,wx.ALIGN_CENTER|wx.ALL,5)
        self.OtherTeams.SetSizer(sizer_31)
        sizer_31.SetSizeHints(self.OtherTeams)

我的新面板3看起来像下图。这是一些改进。但是,我希望单个面板(总共10个)扩展相同的数量,以便整个笔记本页面都被相同大小的小面板覆盖(想象一下日历是什么样子的,每天都是一个面板)。在

enter image description here

****结束编辑****

以下是我的原始代码:

注意:self.OtherTeams是wx.笔记本页面位于self.Panel3下。self.Panel_Others是一个包含wx.面板我正在显示(这是动态变化的,所以这就是为什么我有一个字典,而不是指定它们)。在

^{pr2}$

enter image description here


Tags: 代码selfgsadd网格面板编辑center
1条回答
网友
1楼 · 发布于 2024-10-01 11:34:17

wxPython 2.8中,这将导致页面左上角出现单一模糊。 wxPython 2.9在使用sizer时会更聪明一些,这就是为什么它看起来有些工作。在

首先,在BoxSizer中创建GridSizer,但不允许它动态扩展(wx.EXPAND)。 其次,您将sizer设置为wx.Notebook,而不是页面(panel),这将向下移动整个布局并裁剪网格大小调整器中控件/面板的底行,或者在2.8中被完全忽略,从而将所有内容移到左上角。在

这应该可以做到:

sizer_31 = wx.BoxSizer(wx.VERTICAL) # page (panel) sizer for outer border
gs = wx.GridSizer(0,4,7,7) # content sizer

for i in self.Panel_Others.keys():
    gs.Add(self.Panel_Others[i],0,wx.EXPAND|wx.ALL,5) 
    # + wx.EXPAND: allow the content to fill the 'cells'
    #              (proportion is ignored here so it can be 0)
sizer_31.Add(gs,1,wx.EXPAND|wx.ALL,5) 
# + 1, wx.EXPAND: allow the grid to expand to the main sizer
#                 which in turn fits to the page
self.Panel3.SetSizer(sizer_31) # set the sizer to page, not the notebook

编辑:下面的示例演示如何动态更新wx.GridSizer公司在一个wx.笔记本页码:23/46

^{pr2}$

相关问题 更多 >