2011-03-01 40 views
2

我試圖尋找到的wxPython和施膠劑,我總結了以下例子:wxpython:嵌套的大小寫,並在左上角的小廣場?

import wx 

class MyTestFrame(wx.Frame): 
    def __init__(self, parent, title): 
     super(MyTestFrame, self).__init__(parent, title=title, 
      size=(250, 150)) 

     # the master panel of the frame - "Add a panel so it looks correct on all platforms" 
     self.panel = wx.Panel(self, wx.ID_ANY) 
      # self.panel.SetBackgroundColour(wx.Colour(124, 224, 124)) # to confirm the square is the panel 


     # want these buttons absolutely positioned 
     btn_A = wx.Button(self, id=1, label='A', pos=(10, 10), size=(30, 30)) 
     btn_A.SetBackgroundColour(wx.Colour(224, 124, 124)) 
     btn_B = wx.Button(self, id=2, label='B', pos=(45, 10), size=(30, 30)) 
     btn_C = wx.Button(self, id=3, label='C', pos=(80, 10), size=(30, 30)) 

     # additional object 

     mastersizer = wx.BoxSizer(wx.VERTICAL) 
     btnsizer = wx.BoxSizer(wx.HORIZONTAL) 

     btnsizer.Add(btn_A, 0) 
     btnsizer.Add(btn_B, 0) 
     btnsizer.Add(btn_C, 0) 

     mastersizer.Add(btnsizer, 1, wx.EXPAND) 
     self.panel.SetSizer(mastersizer) 
     #~ mastersizer.Fit(self) # makes the window as large as the buttons 

     self.Centre() 
     self.Show() 


if __name__ == '__main__': 
    app = wx.App() 
    MyTestFrame(None, 'Test') 
    app.MainLoop() 

當我運行它,我得到一個窗口像在圖像上:

wxPython window

有人可以解釋一下,爲什麼我會在左上角得到那個灰色的小方塊 - 以及實現代碼的正確方法是什麼? (該按鈕是故意着色的,所以它可能很明顯..)我在Ubuntu Lucid上,以防特定於平臺。

編輯︰該廣場顯然是面板本身,但然後我不能告訴爲什麼它不調整大小,成爲按鈕的'父',如預期的那樣?

回答

5

很好 - 沒那麼糟;但對我來說並不那麼明顯:)所以這裏有一些對像我這樣的其他noobs的參考:在上面的代碼中,按鈕被定義爲框架的子組件 - 而不是面板;所以唯一的變化是這樣的:

# want these buttons absolutely positioned 
    # must be children of panel - if panel is to encompass them! 
    btn_A = wx.Button(self.panel, id=1, label='A', pos=(10, 10), size=(30, 30)) 
    btn_A.SetBackgroundColour(wx.Colour(224, 124, 124)) 
    btn_B = wx.Button(self.panel, id=2, label='B', pos=(45, 10), size=(30, 30)) 
    btn_C = wx.Button(self.panel, id=3, label='C', pos=(80, 10), size=(30, 30)) 

於是,一切似乎很動聽:

enter image description here

好了,對不起,在這裏浪費的空間 - 但希望,可能是使用他人:)

乾杯!