wxPython添加statictext将调整pan的大小

2024-09-27 23:19:05 发布

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

我有一个相当简单的设置flexgridsizer创建一个3 x 3网格: (方便阅读的快速注释:pvs=尺寸器,pvp=面板)

    pvs["flex"] = wx.FlexGridSizer(rows = 3, cols = 3, vgap = 0, hgap = 0)
    for index, vert in enumerate(pv.vertNames):
        for horiz in pv.horizNames:
            pvp["{0}_{1}".format(vert, horiz)] = wx.Panel(self)
            pvp["{0}_{1}".format(vert, horiz)].SetBackgroundColour(c.COLORS["black"])

    for panel in pvp.values():
        pvs["flex"].Add(panel, flag = wx.EXPAND)

    proportions = (1, 6, 1)

    for index, prop in enumerate(proportions):
        pvs["flex"].AddGrowableCol(index, prop)
        pvs["flex"].AddGrowableRow(index, prop)

    self.SetSizer(pvs["flex"])

我没有显式地设置面板的大小,它们是根据可增长的行和列的比例来调整大小的。在

稍后,我在顶部中间面板中添加了两个statictext:

^{pr2}$

最后要解决的问题是:添加这些静态文本将调整顶部中间面板的大小,使其明显更宽、更高。有没有办法锁定flexgridsizer的比例?或者我做了一些我可以改变的错误的事情来避免这种行为?在

在故障排除过程中,我发现即使字体很大,文本仍有足够的空间以适应原来的面板大小。我可以将字体大小降到5,它会变得非常小,但仍然会将面板的大小调整得更大一点,就像是它在将自己的方式推入面板,而不是仅仅适应内部。在


Tags: informat面板forindexflexwxpv
1条回答
网友
1楼 · 发布于 2024-09-27 23:19:05

我发现我的问题是,我离开的面板没有一个尺寸,所以他们是增长的基础上,他们放在他们。因此,我决定添加显式大小,但仍然保持它们对不同帧大小的灵活性,方法是根据百分比动态创建大小:

    width = self.package.frame.size[0]
    height = self.package.frame.size[1]
    corner = ((width * .125), (height * .125))
    ns = ((width * .75), (height * .125))
    ew = ((width * .125), (height * .75))
    mid = ((width * .75), (height * .75))
    sizeIter = iter((corner, ns, corner, ew, mid, ew, corner, ns, corner))

然后在for循环中创建面板:

^{pr2}$

更改为:

pvp["{0}_{1}".format(vert, horiz)] = wx.Panel(self, size = next(sizeIter))

相关问题 更多 >

    热门问题