【发布时间】:2012-05-22 18:39:35
【问题描述】:
我正在尝试创建一个对话框,其中有一些长描述,每个描述后跟一个带有单选按钮答案的简短问题。我使用GridBagSizer(wxWidgets docs、wxPython docs)来布置我的控件,其中长描述跨越所有三列,问题和两个单选按钮答案分别位于各自的列中。
我希望答案与右侧对齐,因此在将问题的StaticText 添加到布局时,我尝试传递flag=wx.EXPAND。然而,这似乎没有达到预期的效果。第一列保持足够大以容纳最长的问题,而不是填充可用空间并将单选按钮推到右侧。
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 中展开一列以填充可用空间,还是我做错了?如果我做错了,它是否记录在任何地方?参考适当的文档会有所帮助。
【问题讨论】: