wxpython在staticBox中跨越gridbagsizer

时间:2017-11-19 16:01:57

标签: wxpython gridbagsizer

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

tc1和tc2中的跨度以及expand-flag对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()

1 个答案:

答案 0 :(得分:0)

您的问题是您要定义"ptor" 您在"appstore"中使用第0列表示要输出的文本,而不是第1列中的Array ( [0] => mysqli [1] => appstore [2] => sql [3] => postgresql [4] => lesson ) 字段。
鉴于文本字段没有gbs.AddGrowableCol(0)属性,您没有看到问题 将gbs更改为TextCtrl,然后根据需要运行。