2013-12-23 5 views
1

나는 이것이 매우 간단한 문제라는 것을 알고 있지만 해결책을 찾기 위해 많은 시간을 보냈다. 내 패널이 크기를 변경하지 않고 창 중앙에 배치 된 50x50 크기의 파란색 상자가되기를 원합니다. 나는 각각 HORIZONTAL과 VERTICAL 인 안쪽과 바깥 쪽의 Sizer를 시도해 보았는데, 그것은 바깥 쪽의 Sizer 만 인식하는 것처럼 보인다. 누군가 나를 도울 수 있으면 크게 감사 할 것입니다. 패널의 양쪽에 stretchspacer 추가 수입 WXwxPython. 정적 크기 패널을 중앙에 배치하려면 어떻게합니까?

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() 

답변

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() 
+0

그것을 않았다 할 것입니다! 대단히 감사합니다. – cwilliams