Python:wxPython:GridBagSizer布局管理帮助
我在调整控件大小时遇到了问题,能不能帮我指出哪里需要修改,以便让控件整齐地排列在一起?
比如,文本框(TextCtrl)应该是标准的默认大小。
而“读取”(Read)和“设置”(Set)这两个按钮应该正好放在文本框的下面。
这是我的代码:
class AVMCPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
#create the grouping box and sizer for the outline
self.box = wx.StaticBox(self, -1, "AVMC CONTROL PANEL")
self.bsizer = wx.StaticBoxSizer(self.box, wx.VERTICAL)
#create the sizer and place controls within box
self.gbs = wx.GridBagSizer(5,5)
self.sampleList = ['zero', 'one', 'two', 'three', 'four'] #temp list items
self.t1 = wx.StaticText(self, label="Power Rail to margin:")
self.lb1 = wx.ListBox(self, 1, (100, 50), (150, 120), self.sampleList, wx.LB_SINGLE)
self.t2 = wx.StaticText(self, label="Read Voltage:")
self.t3 = wx.StaticText(self, label="Set Voltage:")
self.read_btn = wx.Button(self, 1, " Read ", (-1,-1) )
self.set_btn = wx.Button(self, 1, " Set ", (-1,-1))
self.rtext = wx.TextCtrl(self, 1, "", size=(80, -1), style=wx.ALL)
self.stext = wx.TextCtrl(self, 1, "", size=(80, -1), style=wx.ALL)
self.gbs.Add(self.t1, (0,0))
self.gbs.Add(self.lb1, (1,0))
self.gbs.Add(self.t2, (0,5))
self.gbs.Add(self.t3, (0,10))
self.gbs.Add(self.read_btn, (2,5))
self.gbs.Add(self.set_btn, (2,10))
self.gbs.Add(self.rtext, (1,5))
self.gbs.Add(self.stext, (1,10))
#Place the control inside group box
self.bsizer.Add(self.gbs, 0, flag=wx.ALL, border=5)
#Place the static group box sizer within the border frame
#Creating a border that the static box will sit inside
self.border = wx.BoxSizer()
self.border.Add(self.bsizer, 1000, wx.ALL, 10)
self.SetSizer(self.border)
谢谢。
1 个回答
1
在下面的代码中:
self.rtext = wx.TextCtrl(self, 1, "", size=(80, -1), style=wx.ALL)
self.stext = wx.TextCtrl(self, 1, "", size=(80, -1), style=wx.ALL)
你在一个文本框(TextCtrl)上使用了一个Sizer标志。把这个标志去掉,可以防止这个文本框变得过高。
你的按钮往下移动是因为上面的列表框(ListBox)变宽了。你可以让这个列表框跨越两行,使用以下代码:
self.gbs.Add(self.lb1, (1,0), span=wx.GBSpan(2,1))