首页 > 解决方案 > wx.grid.Grid 在 wx.BoxSizer 中使用了太多空间

问题描述

我正在尝试使用 wx.BoxSizer 中的 wx.grid.Grid() 在 wxpython 中显示项目表。该表很大,但我不希望它占用所有屏幕空间,所以我将它放在 boxsizer 中,如下面的代码所示。

def setOutputPanel(self):
    self.outputBox = wx.grid.Grid(parent=self.pnl)
    self.outputBox.CreateGrid(100, 100)
    self.outputBox.DisableCellEditControl()
    self.outputPanel.Add(self.outputBox, 1, wx.EXPAND)
    self.graphControl = wx.Button(parent=self.pnl, label="close")
    self.outputPanel.Add(self.graphControl, 0, wx.ALIGN_RIGHT)
    self.outputText = wx.TextCtrl(parent=self.pnl, value="text control", style=wx.EXPAND)
    self.outputPanel.Add(self.outputText, 1, wx.EXPAND)

问题是当我将 outputText 的大小设置为 1

self.outputPanel.Add(self.outputText, 1, wx.EXPAND)

它根本没有显示 到 TextCtrl@size1 的链接

如果我将大小设置为 0,我可以让它显示出来。

self.outputPanel.Add(self.outputText, 0, wx.EXPAND)

但是,实在是太小了。我希望它在桌子上的高度相同。链接到 TextCtrl@size0

标签: pythonpython-3.xwxpython

解决方案


因此,在阅读了更多 wxPython 文档后,我找到了解决方案。

如果您访问此页面,他们会在其中讨论一些 wxPython 的 sizer 功能(的超类wx.BoxSizer)。在页面上它说“通常wx.Sizers将用于wx.Window.GetEffectiveMinSize确定窗口项目的最小尺寸应该是多少,并将使用该尺寸来计算布局。” 所以我添加了wx.FIXED_MINSIZE,现在网格没有最小尺寸。

这似乎是个坏主意,因为网格现在可以缩小到太小的尺寸。但是,我已经将框架最小尺寸设置得非常大,并且网格使用了一半的空间,所以我认为这不会成为问题。


推荐阅读