2015-11-10 22 views
0

我想學習wxpython在python中做圖形接口。 我想要的接口應該有2個StaticBoxes和一個應該在第一個靜態框中的按鈕。我想這樣的事情:將元素添加到wxpython中的StaticBox中

|----------------------------------------------| 
|            | 
| #####          | 
|            | 
|            | 
|----------------------------------------------| 
|            | 
|            | 
|            | 
|----------------------------------------------| 

我不知道爲什麼我在左上角獲得按鈕,我懷疑我可配置是錯誤的,這就是爲什麼它是不可能的staticbox的。我得到的東西是這樣的:

######-----------------------------------------| 
|            | 
|            | 
|            | 
|            | 
|----------------------------------------------| 
|            | 
|            | 
|            | 
|----------------------------------------------| 

我的代碼是:

class Frame(wx.Frame): 
def __init__(self, title): 
    wx.Frame.__init__(self, None, title=title, pos=(150,150), size=(600,600)) 

    # Defining panel 
    panel = wx.Panel(self,-1) 

    # Elements of the frame 
    staticBoxUno = wx.StaticBox(panel, -1, 'Uno:', pos=wx.Point(-1, -1), size=wx.Size(600, 150), style=0) 
    staticBoxUno.SetOwnFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False, 'MS Shell Dlg')) 

    staticBoxDos = wx.StaticBox(panel, -1, 'Dos:', pos=wx.Point(-1, -1), size=wx.Size(600, -1), style=0) 
    staticBoxDos.SetOwnFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False, 'MS Shell Dlg')) 

    buttonUno = wx.Button(panel, -1, "OK") 

    #Initialization Sizers 
    boxMadre = wx.BoxSizer(wx.VERTICAL) 
    boxMadre.AddSpacer(5) 
    boxMadre.Add(staticBoxUno, 0, wx.EXPAND|wx.ALL, 0) 
    boxMadre.AddSpacer(5) 
    boxMadre.Add(staticBoxDos, 1, wx.EXPAND|wx.ALL, 0) 

    staticBoxUnoSizer = wx.StaticBoxSizer(staticBoxUno, wx.VERTICAL) 
    staticBoxUnoSizer.Add(buttonUno, -1, wx.EXPAND | wx.ALL, 5) 

    panel.SetSizer(boxMadre) 
    panel.Layout() 

app = wx.App(redirect=True) # Error messages go to popup window 
top = Frame("<<project>>") 
top.Show() 
app.MainLoop() 

我想這個問題將是,當我嘗試將按鈕添加到StaticBoxUno,但我不知道到底什麼是失敗

非常感謝! 巴勃羅

回答

0

更改代碼如下:

# … 
    buttonUno = wx.Button(panel, -1, "OK") 

    staticBoxUnoSizer = wx.StaticBoxSizer(staticBoxUno, wx.VERTICAL) 
    # use 0 instead of -1 as proportion in sizer 
    staticBoxUnoSizer.Add(buttonUno, 0, wx.EXPAND|wx.ALL, 5) 

    # … 
    # add sizer instead of StaticBox! 
    boxMadre.Add(staticBoxUnoSizer, 0, wx.EXPAND|wx.ALL, 0) 
+0

非常感謝nepix32,現在的工作。我必須添加sizer而不是staticbox本身。 – Pablo