如何只在水平上扩展wxypython中的TextCtrl?

时间:2014-10-16 17:17:30

标签: python wxpython

我试过了:

# Inside a GridBagSizer
self.sizer.Add(self.mytextctrl, (0, 0), (1, 15), wx.GROW)

我也试过了:

self.sizer.Add(self.mytextctrl, (0, 0), (1, 15), wx.EXPAND)

在这两种情况下,窗口小部件的高度和长度都会扩展。我只想增加长度(水平)。这有风格标志吗?

1 个答案:

答案 0 :(得分:0)

您必须使用sizer的AddGrowableCol()方法来完成此操作。这是一个例子:

import wx

########################################################################
class MyPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)

        bag = wx.GridBagSizer(3, 3)

        txt = wx.TextCtrl(self)
        bag.Add(txt, pos=(0,0), flag=wx.EXPAND, border=5)
        bag.AddGrowableCol(0)

        self.SetSizer(bag)


########################################################################
class MyFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title='Bag sizer')
        panel = MyPanel(self)
        self.Show()

if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame()
    app.MainLoop()

您还可以尝试设置窗口小部件的范围,看看它是否也适合您。但是我对这种方法并没有太多运气。

通常我喜欢做的是嵌套BoxSizer。我觉得这让我对我的布局有了更多的控制权,虽然在规划方面需要花费更多的时间。