2013-12-23 37 views
1

我知道這是一個非常簡單的問題,但我花了數小時試圖找出解決方案。我希望我的面板是一個不改變大小的50x50藍色框,並且保持居中在窗口中。我已經嘗試過分別具有水平和垂直的內部和外部尺寸,並且它似乎只識別外部尺寸。如果有人能幫助我,我將不勝感激。 進口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

在面板的兩側添加stretchspacer會做

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