如何在wxpython中仅水平扩展TextCtrl?
我试过:
# 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嵌套在一起。我觉得这样可以让我对布局有更多的控制,虽然在一开始规划的时候会花费更多的时间。