画面に表示できる画像の数を計算する関数があります。画面に表示できる画像よりも多くの画像がある場合は、すべての画像が表示されるまで画像のサイズを変更します。
次に、1 つの垂直ボックスサイザーと複数の水平ボックスサイザーでそれらを表示したい!
ボックスサイザーの水平方向の数は動的で、画像の数に応じて 1 つまたは複数になります。
複数のボックスサイザーを定義して、それらを垂直ボックスサイザーに追加するにはどうすればよいですか?
単純に水平方向のサイザーをループに.Add
して、それらを同じ垂直方向のサイザーに接続しないのはなぜですか? 例えば
def HorzInVert(n):
vert = wx.BoxSizer(wx.VERTICAL)
horizontals = []
for i in range(n):
horz = wx.BoxSizer(wx.HORIZONTAL)
vert.Add(horz,1, wx.ALL, 0)
horizontals.append(horz)
return vert, horizontals
この単純な関数はどこからでも呼び出すことができ、垂直サイザーとその中のn
水平サイザーのリストを返します。次に、呼び出し元は水平スライダーに適切なものを追加SetSizer
し、垂直サイザーを引数として適切に追加し、垂直サイザーの.Fit
. もちろん、Add
s がどのように実行されるかを正確に制御するためのあらゆる種類の引数を使用して、必要に応じてより洗練されたものにすることができます。
wx.GridSizerがその答えです!