2016-07-25 36 views
0

我一直在使用的wxPython構建一個GUI最近開始和我試圖創建以下佈局:wxPython中使用佈局boxsizers

Button1 Button2 Button3 
---------------------------------------- 
listbox | textctrl 

的按鈕應該有一個靈活的寬度,擴大填補了全寬框架之間有邊框(每個按鈕的寬度(包括邊框)爲1/3幀)。它們的高度應設置爲以像素爲單位的高度。

列表框應垂直填充框架和具有x像素

的textctrol的一組寬度應是膨脹以填充幀的寬度垂直地以及水平地文本框。

這是我的代碼有:因爲我看到的是不是我所期望看到的,任何人誰可以幫我

mainPanel = wx.Panel(self, -1) 
parentBox = wx.BoxSizer(wx.VERTICAL) 

menubar = wx.MenuBar() 
filem = wx.Menu() 

menubar.Append(filem, '&File') 
self.SetMenuBar(menubar) 

navPanel = wx.Panel(mainPanel, -1, size=(1000, 80)) 
navBox = wx.BoxSizer(wx.HORIZONTAL) 

newSection = wx.Button(navPanel, self.ID_NEW, 'New') 
renSection = wx.Button(navPanel, self.ID_RENAME, 'Rename') 
dltSection = wx.Button(navPanel, self.ID_DELETE, 'Delete') 

navBox.Add(newSection, 1, wx.EXPAND | wx.ALL, 5) 
navBox.Add(renSection, 1, wx.EXPAND | wx.ALL, 5) 
navBox.Add(dltSection, 1, wx.EXPAND | wx.ALL, 5)   

navPanel.SetSizer(navBox) 

contentPanel = wx.Panel(mainPanel, -1, size=(1000, 600)) 
contentBox = wx.BoxSizer(wx.HORIZONTAL) 

self.listbox = wx.ListBox(contentPanel, -1, size=(300, 700)) 
self.settings = wx.TextCtrl(contentPanel, -1) 

contentBox.Add(self.listbox, 0) 
contentBox.Add(self.settings, 1, wx.EXPAND | wx.ALL, 5) 

contentPanel.SetSizer(contentBox) 

parentBox.Add(navPanel, 0, wx.EXPAND | wx.ALL, 5) 
parentBox.Add(contentPanel, 1, wx.EXPAND | wx.ALL, 5) 

mainPanel.SetSizer(parentBox) 

事情錯了?

+0

究竟發生了什麼問題?一些更多的細節將有助於理解你的問題。 – hdrz

回答

0

它是爲我工作,我在win64,python 32bit 2.7.3.3,wx'2.8.12.1(msw-unicode)'。完整的工作測試的例子是:

import wx 

class testframe(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, -1, 'some title') 
     mainPanel = wx.Panel(self, -1) 
     parentBox = wx.BoxSizer(wx.VERTICAL) 

     menubar = wx.MenuBar() 
     filem = wx.Menu() 

     menubar.Append(filem, '&File') 
     self.SetMenuBar(menubar) 

     navPanel = wx.Panel(mainPanel, -1, size=(1000, 80)) 
     navBox = wx.BoxSizer(wx.HORIZONTAL) 

     newSection = wx.Button(navPanel, -1, 'New') 
     renSection = wx.Button(navPanel, -1, 'Rename') 
     dltSection = wx.Button(navPanel, -1, 'Delete') 

     navBox.Add(newSection, 1, wx.EXPAND | wx.ALL, 5) 
     navBox.Add(renSection, 1, wx.EXPAND | wx.ALL, 5) 
     navBox.Add(dltSection, 1, wx.EXPAND | wx.ALL, 5)   

     navPanel.SetSizer(navBox) 

     contentPanel = wx.Panel(mainPanel, -1, size=(1000, 600)) 
     contentBox = wx.BoxSizer(wx.HORIZONTAL) 

     self.listbox = wx.ListBox(contentPanel, -1, size=(300, 700)) 
     self.settings = wx.TextCtrl(contentPanel, -1) 

     contentBox.Add(self.listbox, 0, wx.ALL, 5) 
     contentBox.Add(self.settings, 1, wx.EXPAND | wx.ALL, 5) 

     contentPanel.SetSizer(contentBox) 

     parentBox.Add(navPanel, 0, wx.EXPAND | wx.ALL, 5) 
     parentBox.Add(contentPanel, 1, wx.EXPAND | wx.ALL, 5) 

     mainPanel.SetSizer(parentBox) 
     parentBox.Fit(self) 

app = wx.PySimpleApp() 
app.frame = testframe() 
app.frame.Show() 
app.MainLoop() 

通知加入的主分級機Fit(),也5px的邊框添加到列表框中。