1

これは非常に単純な質問ですが、解決策を見つけようと何時間も費やしました。パネルを、サイズが変わらず、ウィンドウの中央に配置される 50x50 の青いボックスにしたいと考えています。内側と外側のサイザーをそれぞれ HORIZONTAL と VERTICAL にしてみましたが、外側のサイザーしか認識しないようです。誰かが私を助けてくれれば幸いです。インポート wx

class Main(wx.Frame):

def __init__(self,parent,id):
    wx.Frame.__init__(self,parent,id,'Main',size=(700,500))

    self.SetBackgroundColour('white')

    panel = wx.Panel(self,wx.ID_ANY,size=(50,50))
    panel.SetBackgroundColour('blue')

    sizer=wx.BoxSizer()
    sizer.Add(panel,0,wx.ALIGN_CENTER|wx.ALL)

    self.SetSizer(sizer)


if __name__=='__main__':
    app=wx.App()
    frame=Main(parent=None, id=-1)
    frame.Show()
    app.MainLoop()
4

1 に答える 1

1

パネルの両側にストレッチスペーサーを追加するとそれができます

import wx


class Main(wx.Frame):

    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'Main', size=(700, 500))

        self.SetBackgroundColour('white')

        panel = wx.Panel(self, wx.ID_ANY, size=(50, 50))
        panel.SetBackgroundColour('blue')

        sizer = wx.BoxSizer()
        sizer.AddStretchSpacer(1)
        sizer.Add(panel, 0, wx.ALIGN_CENTER)
        sizer.AddStretchSpacer(1)

        self.SetSizer(sizer)


if __name__ == '__main__':
    app = wx.App()
    frame = Main(parent=None, id=-1)
    frame.Show()
    app.MainLoop()
于 2013-12-23T06:47:08.993 に答える