2011-08-19 44 views
0

我想把TreeCtrl放在SplitterWindow的两边。当然,TreeCtrl应该是扩展为作为窗口的大小。wxPython,使用SplitterWindow

splitter = wx.SplitterWindow(self, style = wx.SP_BORDER) 

leftPanel = wx.Panel(splitter) 
rightPanel = wx.Panel(splitter) 

leftSizer = wx.BoxSizer(wx.VERTICAL) 
rightSizer = wx.BoxSizer(wx.VERTICAL) 

localTree = wx.TreeCtrl(leftPanel) 
flickrTree = wx.TreeCtrl(rightPanel) 

leftSizer.Add(localTree, flag = wx.EXPAND | wx.ALIGN_CENTER) 
rightSizer.Add(flickrTree, flag = wx.EXPAND) 

splitter.SplitVertically(leftPanel, rightPanel) 
leftPanel.SetSizer(leftSizer) 
leftPanel.SetAutoLayout(1) 
leftSizer.Fit(leftPanel) 

我已经试过上面的代码,但TreeCtrl的高度没有像我期望的那样扩大。

它有什么问题?

回答

1

对我来说,以下工作:

splitter = wx.SplitterWindow(self, style = wx.SP_BORDER) 
leftPanel = wx.Panel(splitter) 
rightPanel = wx.Panel(splitter) 

localTree = wx.TreeCtrl(leftPanel) 
leftSizer = wx.BoxSizer(wx.VERTICAL) 
leftSizer.Add(localTree, 1, wx.EXPAND | wx.ALL) 
leftPanel.SetSizer(leftSizer) 

flickrTree = wx.TreeCtrl(rightPanel) 
rightSizer = wx.BoxSizer(wx.VERTICAL) 
rightSizer.Add(flickrTree, 1, wx.EXPAND | wx.ALL) 
rightPanel.SetSizer(rightSizer) 

splitter.SplitVertically(leftPanel, rightPanel) 

的关键是要设置的比例增值的TREECTRL到BoxSizer时,即:

leftSizer.Add(localTree,1,WX。 EXPAND | wx.ALIGN_CENTER)

而非:

leftSizer.Add(localTree,标志= wx.EXPAND | wx.ALIGN_CENTER)

否则,它默认为零。