如何在wxpython中仅水平扩展TextCtrl?

0 投票
1 回答
721 浏览
提问于 2025-04-27 23:54

我试过:

# 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

你需要使用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()

你也可以试着设置小部件的跨度,看看这样是否对你有用。不过我用这种方法的时候运气不太好。

通常我喜欢把BoxSizers嵌套在一起。我觉得这样可以让我对布局有更多的控制,虽然在一开始规划的时候会花费更多的时间。

撰写回答