いくつかの長い説明があり、それぞれにラジオ ボタンの回答を含む短い質問が続くダイアログを作成しようとしています。GridBagSizer
( wxWidgets docs , wxPython docs )を使用してコントロールを配置しています。ここでは、長い説明が 3 つの列すべてにまたがり、質問と 2 つのラジオ ボタンの回答がそれぞれ独自の列に表示されます。
回答を右揃えにしたいので、レイアウトに質問を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
たが、予想通り、「いいえ」ボタンが右に配置されます.3番目の列が残りのスペースを占有しているためです.
ここで何か不足していますか?使用可能なスペースを埋めるために 1 つの列をGridBagSizer
展開することはできませんか、それとも間違っていますか? 私が間違っている場合、それはどこかに文書化されていますか? 適切なドキュメントへの参照が役立ちます。