我想对齐boxsizer的两个元素,即:"BIG BIG STRINNNNNGGGGGGG"one_answers"Measurement",使它们位于同一列下,如下所示:
hello world Measurement
oh no worldBIG BIG STRINNNNNNGGGGGGGGGGGGGGGGGGGGGGGGG
我如何使用下面的代码来实现这一点?
阅读wxPython文档,它显示如下:
ALIGN*标志允许您在sizer分配给它的空间,并根据边界进行调整(如果有的话)。
然而,在这种情况下,情况并非如此。
import wx
from imgtec import codescape
import wx.lib.inspection
class MyRegion(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, title="My Region")
b1=wx.BoxSizer(orient=wx.HORIZONTAL)
b2=wx.BoxSizer(orient=wx.HORIZONTAL)
d1 = wx.StaticText(self, label="hello world")
b1.Add(d1)
d2 = wx.StaticText(self, label="Measurement", style=wx.ALIGN_RIGHT)
b1.Add(d2,
flag=wx.ALIGN_RIGHT | wx.EXPAND)
c1 = wx.StaticText(self, label="oh no world")
b2.Add(c1)
c2 = wx.StaticText(self, label="BIG BIG STRINNNNNNGGGGGGGGGGGGGGGGGGGGGGGGG",style=wx.ALIGN_RIGHT)
b2.Add(c2,
flag=wx.ALIGN_RIGHT| wx.EXPAND )
sizer = wx.GridBagSizer()
sizer.Add(item=b2, pos=(0,0), flag=wx.EXPAND)
sizer.Add(item=b1, pos=(1,0), flag=wx.EXPAND)
self.SetSizer(sizer)
if __name__ == "__main__":
app = wx.App()
frame = MyRegion(None)
frame.Show()
wx.lib.inspection.InspectionTool().Show()
app.MainLoop()
您只需要在d1
和d2
:之间添加一个间隔符
import wx
import wx.lib.inspection
class MyRegion(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, title="My Region")
b1=wx.BoxSizer(orient=wx.HORIZONTAL)
b2=wx.BoxSizer(orient=wx.HORIZONTAL)
d1 = wx.StaticText(self, label="hello world")
b1.Add(d1)
b1.AddStretchSpacer() # <-- ADD THE SPACER HERE
d2 = wx.StaticText(self, label="Measurement", style=wx.ALIGN_RIGHT)
b1.Add(d2,
flag=wx.ALIGN_RIGHT | wx.EXPAND)
c1 = wx.StaticText(self, label="oh no world")
b2.Add(c1)
c2 = wx.StaticText(self, label="BIG BIG STRINNNNNNGGGGGGGGGGGGGGGGGGGGGGGGG",style=wx.ALIGN_RIGHT)
b2.Add(c2,
flag=wx.ALIGN_RIGHT| wx.EXPAND )
sizer = wx.GridBagSizer()
sizer.Add(item=b2, pos=(0,0), flag=wx.EXPAND)
sizer.Add(item=b1, pos=(1,0), flag=wx.EXPAND)
self.SetSizer(sizer)
if __name__ == "__main__":
app = wx.App()
frame = MyRegion(None)
frame.Show()
wx.lib.inspection.InspectionTool().Show()
app.MainLoop()
Mike Driscoll的回答已经显示了正确操作的方法,我只想补充一点,有一条简单的规则需要记住:对齐标志只能在横向sizer方向上工作,即垂直于水平框式sizer。
wxWidgets的未来版本将在水平sizer中使用wxALIGN_RIGHT
(类似地,wxALIGN_TOP
或垂直sizer中的另一个垂直对齐)时出现错误,因为这可能永远不会起作用。
但是,在wx[Flex]GridSizer
等二维尺寸调整器中,可以在两个方向上使用对齐标志。