wx.grid.Grid在wx.BoxSizer中使用太多空间



我试图在wxpython中使用wx.grid.Grid()在wx.BoxSizer中显示项目表。表格很大,但我不想让它占据所有的屏幕空间,所以我把它放在boxsize中,如下面的代码所示。

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

所以,在阅读了更多的wxPython文档之后,我找到了解决方案。

如果你去这个页面,他们讨论了一些wxPython的大小器特性(wx.BoxSizer的超类)。页面上写着:"通常wx.Sizers将使用wx.Window.GetEffectiveMinSize来确定窗口项目的最小尺寸,并使用该尺寸来计算布局。"所以我添加了wx.FIXED_MINSIZE,现在网格没有最小尺寸。

这可能看起来像一个坏主意,因为网格现在可以缩小到一个太小的大小。但是,我把框架的最小大小设置得很大,网格占用了一半的空间,所以我认为这不会是一个问题。

最新更新