2016-07-25 34 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的边框添加到列表框中。