0

wx.BoxSizer を使用して小さくて簡単なプログラムを作成しました。ソースコードは次のとおりです。

import wx

# MAIN PROGRAM...
class MyFrame(wx.Frame):

     def __init__(self):

     wx.Frame.__init__(self, None, -1, "My Frame", size = (600, 600))

     mainPanel = wx.Panel(self)
     mainBox = wx.BoxSizer(wx.VERTICAL)

     header1 = wx.StaticText(mainPanel, label = 'Header1:')
     header2 = wx.StaticText(mainPanel, label = 'Header2:')

     panel1 = wx.Panel(mainPanel, size = (200, 200), style = wx.SUNKEN_BORDER)
     panel2 = wx.Panel(mainPanel, size = (200, 200), style = wx.SUNKEN_BORDER)

     box1 = wx.BoxSizer(wx.HORIZONTAL)
     box1.AddSpacer(50)
     box1.Add(header1, 0, wx.ALL, 5)
     box1.AddSpacer(50)
     box1.Add(header2, 0, wx.ALL, 5)

     box2 = wx.BoxSizer(wx.HORIZONTAL)
     box2.Add(panel1, 0, wx.ALL, 5)
     box2.Add(panel2, 0, wx.ALL, 5)

     mainBox.Add(box1, 0, wx.ALL, 5)
     mainBox.Add(box2, 0, wx.ALL, 5)

     mainPanel.SetSizer(mainBox)
     #self.Center()           


if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame()
    frame.Show(True)
    app.MainLoop()

    print 'Exiting...'

問題は、各ヘッダーの左側に水平スペースを追加すると、ヘッダーと sunken_border header1 および header2 の間に垂直スペースも追加されることです。副作用として垂直スペースを追加せずに、ヘッダーの前に水平スペースを追加する方法はありますか? ありがとう。

- -編集 - -

あなたのコメントに答えるために:ここにプログラムの写真があります: ここに画像の説明を入力 シンプルなBoxSizerプログラム...

緑色の「スペース」は必要なスペースですが、赤色の「スペース」は不要な副作用です。基本的に緑のスペースだけが必要ですが、赤のスペースは必要ありません。ヘッダーを2つのパネルと同じ高さにしたいです(真上にあるように...)。現在、それを機能させるために絶対配置を行う必要があります.BoxSizerまたは他のレイアウトマネージャーで機能させることができるかどうかを知りたかっただけです.ありがとう.

4

2 に答える 2