2010-03-03 45 views
0

与此代码:是否可以将wx.auiManager窗格放置到其他窗格的顶部/底部?

import wx 
import wx.aui 

class MyFrame(wx.Frame): 

    def __init__(self, parent, id=-1, title='wx.aui Test', 
       pos=wx.DefaultPosition, size=(800, 600), 
       style=wx.DEFAULT_FRAME_STYLE): 
     wx.Frame.__init__(self, parent, id, title, pos, size, style) 

     self._mgr = wx.aui.AuiManager(self) 

     # create several text controls 
     text1 = wx.TextCtrl(self, -1, 'Pane 1 - sample text', 
          wx.DefaultPosition, wx.Size(200,150), 
          wx.NO_BORDER | wx.TE_MULTILINE) 

     text2 = wx.TextCtrl(self, -1, 'Pane 2 - sample text', 
          wx.DefaultPosition, wx.Size(200,150), 
          wx.NO_BORDER | wx.TE_MULTILINE) 


     info = wx.aui.AuiPaneInfo() 
     info.CaptionVisible(True) 
     info.BottomDockable(False) 
     info.LeftDockable(False) 
     info.RightDockable(False) 
     info.PaneBorder(False) 
     info.Top() 
     info.Row(1) 

     info2 = wx.aui.AuiPaneInfo() 
     info2.CaptionVisible(True) 
     info2.BottomDockable(False) 
     info2.LeftDockable(False) 
     info2.RightDockable(False) 
     info2.Top() 
     info2.Row(2) 

     self._mgr.AddPane(text1, info, 'Pane Number One') 
     self._mgr.AddPane(text2, info2, 'Pane Number Two') 

     self._mgr.Update() 

     self.Bind(wx.EVT_CLOSE, self.OnClose) 


    def OnClose(self, event): 
     self._mgr.UnInit() 
     self.Destroy() 


app = wx.App() 
frame = MyFrame(None) 
frame.Show() 
app.MainLoop() 

,我创建停靠在顶部的两个窗格。 的info.Row(1)和info2.Row(2)把两个窗格此起彼伏:

_TOP_ 
Pane1 
Pane2 

现在,如果我在Pane2移动,这个码头在顶部和发生这种情况:

_TOP_ 
Pane1|Pane2 

我想: 1.避免这种情况(仅每行一个窗格!) 2.如果我移动,停靠窗格中另一个窗格

这是可能的底部/顶部?

回答

1

也许AuiNotebook wxPython示例适合你?

import wx 
import wx.aui 

######################################################################## 
class TabPanel(wx.Panel): 
    """ 
    This will be the first notebook tab 
    """ 
    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     """""" 

     wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     txtOne = wx.TextCtrl(self, wx.ID_ANY, "") 
     txtTwo = wx.TextCtrl(self, wx.ID_ANY, "") 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(txtOne, 0, wx.ALL, 5) 
     sizer.Add(txtTwo, 0, wx.ALL, 5) 

     self.SetSizer(sizer) 

class DemoPanel(wx.Panel): 
    """ 
    This will be the first notebook tab 
    """ 
    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     """""" 
     wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY) 

     # create the AuiNotebook instance 
     nb = wx.aui.AuiNotebook(self) 

     # add some pages to the notebook 
     pages = [(TabPanel(nb), "Tab 1"), 
       (TabPanel(nb), "Tab 2"), 
       (TabPanel(nb), "Tab 3")] 
     for page, label in pages: 
      nb.AddPage(page, label) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(nb, 1, wx.EXPAND) 
     self.SetSizer(sizer) 

######################################################################## 
class DemoFrame(wx.Frame): 
    """ 
    Frame that holds all other widgets 
    """ 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     """Constructor""" 
     wx.Frame.__init__(self, None, wx.ID_ANY, 
          "AUI-Notebook Tutorial", 
          size=(600,400)) 
     panel = DemoPanel(self) 
     self.Show() 

#---------------------------------------------------------------------- 
if __name__ == "__main__": 
    app = wx.PySimpleApp() 
    frame = DemoFrame() 
    app.MainLoop() 
相关问题