wxPython:在两个BoxSizer内对齐元素
我想对齐Boxsizer的两个元素,即:“BIG BIG Strinnnnnggggg”和“Measurement”,以便它们位于同一列下,如下所示:wxPython:在两个BoxSizer内对齐元素,wxpython,wxwidgets,Wxpython,Wxwidgets,我想对齐Boxsizer的两个元素,即:“BIG BIG Strinnnnnggggg”和“Measurement”,以便它们位于同一列下,如下所示: hello world Measurement oh no worldBIG BIG STRINNNNNNGGGGGGGGGGGGGGGGGGGGGGGGG 如何使用下面的代码来实现这一点 阅读wxPython文档时,它会说: ALIGN*标志允许您指定项目在中的对齐方式 施胶器分配
hello world Measurement
oh no worldBIG BIG STRINNNNNNGGGGGGGGGGGGGGGGGGGGGGGGG
如何使用下面的代码来实现这一点
阅读wxPython文档时,它会说:
ALIGN*标志允许您指定项目在中的对齐方式
施胶器分配给它的空间,根据边界进行调整(如有)
然而,这种情况并非如此
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()
导入wx
导入wx.lib.inspection
类MyRegion(wx.Frame):
定义初始化(自身,父级):
wx.Frame.\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuux.Frame.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
b1=wx.BoxSizer(方向=wx.HORIZONTAL)
b2=wx.BoxSizer(方向=wx.HORIZONTAL)
d1=wx.StaticText(self,label=“hello world”)
b1.加入(d1)
b1.AddStretchSpacer()#Mike Driscoll的答案已经说明了正确操作的方法,我只想补充一点,要记住一条简单的规则:对齐标志仅在横向尺寸标注器方向工作,即水平长方体尺寸标注器的垂直方向
未来版本的wxWidgets在水平尺寸测量仪内使用wxALIGN_RIGHT
时会出现错误(类似地,wxALIGN_TOP
或垂直尺寸测量仪内的另一个垂直对齐方式),因为这永远不会起作用
您可以在二维尺寸测量仪(如wx[Flex]GridSizer
)中的两个方向上使用对齐标志。非常感谢,我想知道为什么wx.ALIGN\u右侧不起作用。这是有道理的:)