【问题标题】:Expand child elements of wx.GridBagSizer on Panel on wx.Notebook在 wx.Notebook 上的 Panel 上展开 wx.GridBagSizer 的子元素
【发布时间】:2015-08-06 00:50:43
【问题描述】:

我有一个带有 wx.Notebook 的简单应用程序,它看起来像这样:

为了布置它的子元素,我使用了 wx.GridBagSizer - 它运行良好。但是,我遇到了一个小而烦人的问题。当我展开 wx.Notebook 的窗口时,它并没有展开所有元素,并导致如下窗口:

这不是我真正想要的。当我调整窗口大小时,我应该如何修改我的代码以便能够展开所有子元素?干杯:)

我的代码很简单:

import wx
import wx.richtext

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title='wx.Notebook')
        book = wx.Notebook(self)
        page = MyPage(parent=book)
        book.AddPage(page, 'Page 1')
        book.AddPage(MyPage(book),'Page 2')
        book.AddPage(MyPage(book),'Page 3')
        self.SetSize(wx.Size(320,250))
        self.Centre()

class MyPage(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, size=(0,0))
        # create sizer to add a border

        bagSizer = wx.GridBagSizer(15, 10)

        mainSizer = wx.BoxSizer(wx.VERTICAL)
        label = wx.StaticText(self, label="Text:")

        self.content1 = wx.TextCtrl(self, size=(300, 20))
        self.content2 = wx.richtext.RichTextCtrl(self, size=(300, 100), style=wx.TE_MULTILINE)

        bagSizer.Add(self.content1, pos=(0, 0), flag=wx.TOP | wx.LEFT | wx.BOTTOM, border=5)

        bagSizer.Add(label, pos=(1, 0), flag=wx.TOP | wx.LEFT | wx.BOTTOM, border=5)

        bagSizer.Add(self.content2, pos=(2, 0), flag=wx.TOP | wx.LEFT | wx.BOTTOM | wx.EXPAND, border=5)

        self.SetSizer(bagSizer)

app = wx.App(False)
MyFrame().Show()
app.MainLoop()

【问题讨论】:

  • 这并不能解释您的问题,但您的代码中有一个未使用的mainSizer

标签: python layout wxpython wxwidgets


【解决方案1】:

您必须告诉您的 GridBagSizer 哪些行和列是可增长的。试试:

bagSizer.AddGrowableRow(2)
bagSizer.AddGrowableCol(0)

self.SetSizer(bagSizer)

【讨论】:

  • 非常感谢,就是这样! :)
猜你喜欢
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多