我正在尝试创建一个对话框,其中有一些长描述,每个描述后跟一个带有单选按钮答案的简短问题。我正在使用GridBagSizer
(wxWidgets docs,wxPython docs)来布置我的控件,其中长描述跨越所有三列,问题和两个单选按钮答案都在它们自己的列中。
我希望答案与右侧对齐,因此在将问题添加到布局flag=wx.EXPAND
时尝试传递。StaticText
然而,这似乎没有达到预期的效果。第一列保持足够大以容纳最长的问题,而不是填充可用空间并将单选按钮推到右侧。
import wx
class MyDialog(wx.Dialog):
def __init__(self, *args, **kwargs):
wx.Dialog.__init__(self, *args, **kwargs)
sizer = wx.GridBagSizer(5, 5)
sizer.SetEmptyCellSize((0,0))
sizer.AddGrowableCol(0)
for i in range(5):
description = wx.StaticText(self, -1, "This is a long description \
that may span several lines. Filler filler filler filler filler. More filler \
filler filler filler filler.")
description.Wrap(500)
question = wx.StaticText(self, -1, "Are you sure?")
yes = wx.RadioButton(self, -1, "Yes", style = wx.RB_GROUP)
no = wx.RadioButton(self, -1, "No")
sizer.Add(description, (i*3, 0), (1, 3))
sizer.Add(question, (i*3+1, 0), flag=wx.EXPAND)
sizer.Add(yes, (i*3+1, 1))
sizer.Add(no, (i*3+1, 2))
self.SetSizerAndFit(sizer)
self.Show()
app = wx.App(False)
dialog = MyDialog(None)
app.MainLoop()
我也尝试过添加一个额外的间隔列,并设置wx.EXPAND
它,但这也无济于事。我也尝试过设置wx.ALIGN_RIGHT
单选按钮,但正如预期的那样,这只会导致“否”按钮向右对齐,因为它是第三列占用了剩余的可用空间。
我在这里错过了什么吗?是否不可能在GridBagSizer
展开中有一列来填充可用空间,还是我做错了?如果我做错了,它是否记录在任何地方?参考适当的文档会有所帮助。