0

我尝试在 StaticBox 中使用 GridBaxSizer 格式化表单。网格有 2 行 4 列,带有 TextCtrl 的输入字段应该使用 3 列并在可用空间上展开。

tc1 和 tc2 中的 span 和 expand - 标志对 tc1 和 tc2 的宽度没有任何影响。它们仅出现在框中的右侧。

我看不出问题出在哪里。有人可以帮忙吗?

这是代码:

import wx

class GbsTest(wx.Frame):
    def __init__(self, parent, title):    
        super(GbsTest, self).__init__(parent, title=title, size=(800, 600))

        self.InitUI()
        self.Show()     

    def InitUI(self):
        panel = wx.Panel(self)
        sizer = wx.GridBagSizer()

        box = wx.StaticBox(panel, label='Demo')
        boxSizer = wx.StaticBoxSizer(box, wx.VERTICAL)

        gbs = wx.GridBagSizer(2, 4)

        text2 = wx.StaticText(panel, label="Name")
        gbs.Add(text2, pos=(1, 0), flag=wx.LEFT|wx.TOP, border=10)

        tc1 = wx.TextCtrl(panel)
        gbs.Add(tc1, pos=(1, 1), span=(1, 3), flag=wx.LEFT|wx.EXPAND)

        text3 = wx.StaticText(panel, label="Package")
        gbs.Add(text3, pos=(2, 0), flag=wx.LEFT|wx.TOP, border=10)

        tc2 = wx.TextCtrl(panel)
        gbs.Add(tc2, pos=(2, 1), span=(1, 3), flag=wx.LEFT|wx.EXPAND)

        gbs.AddGrowableCol(0)
        boxSizer.Add(gbs, flag=wx.EXPAND)

        sizer.Add(boxSizer, pos=(0, 0), flag=wx.EXPAND | wx.ALL, border=5)

        sizer.AddGrowableCol(0)

        panel.SetSizer(sizer)


if __name__ == '__main__':
    app = wx.App()
    GbsTest(None, title="GBS-Test")
    app.MainLoop()
4

1 回答 1

0

您的问题是您正在定义gbs.AddGrowableCol(0). 您正在输出的文本
中使用第 0 列,而不是第1 列中的字段。 鉴于文本字段没有您没有看到问题的属性。 更改为它可以根据您的需要运行。gbsTextCtrl
wx.EXPAND
gbs.AddGrowableCol(0)gbs.AddGrowableCol(1)

于 2017-11-21T16:47:52.680 回答