2013-05-01 100 views
0

我希望能夠使用wxflatnotebook或類似標籤在MDIChildFrame之間選項卡。我已經包含了我的代碼,並且還包含了我正在尋找的示例的圖片。我試圖複製的標籤是(GPBUSD)&(EURUSD)。到目前爲止,我沒有任何運氣,所以任何信息將不勝感激。爲MDIChildFrame創建Notebook標籤

import wx 
import wx.lib.agw.aui as aui 

class MDIFrame(wx.MDIParentFrame): 
    def __init__(self): 
     wx.MDIParentFrame.__init__(self, None, -1, "MDI Parent", size =(1350, 720)) 
     menu = wx.Menu() 
     menu.Append(5000, "&New Window") 
     menu.Append(5001, "&Exit") 
     menubar = wx.MenuBar() 
     menubar.Append(menu, "&File") 
     self.SetMenuBar(menubar) 
     self.Bind(wx.EVT_MENU, self.OnNewWindow, id=5000) 
     self.Bind(wx.EVT_MENU, self.OnExit, id=5001) 
     self.mgr = aui.AuiManager(self, aui.AUI_MGR_DEFAULT 
             |aui.AUI_MGR_TRANSPARENT_DRAG 
             |aui.AUI_MGR_ALLOW_ACTIVE_PANE          
             |aui.AUI_MGR_TRANSPARENT_HINT)      
     self.inputPanel = wx.Panel(self, -1) 
     self.BuildPain() 

    def BuildPain(self):        
     self.mgr.AddPane(self.GetClientWindow(), 
         aui.AuiPaneInfo().Name("book").Caption("Notebook"). 
         CenterPane().CaptionVisible(True).Dockable(True).Floatable(False). 
         BestSize((300,300)).CloseButton(False).MaximizeButton(True) 
         )  
     self.mgr.AddPane(self.inputPanel, 
         aui.AuiPaneInfo().Name("input").Caption("Input panel"). 
         CaptionVisible(True).Left().Dockable(True).Floatable(True). 
         BestSize((300,300)).CloseButton(False).MaximizeButton(True) 
         ) 
     self.mgr.Update() 

    def OnExit(self, evt): 
     self.Close(True) 

    def OnNewWindow(self, evt): 
     win = wx.MDIChildFrame(self, -1, "Child Window") 
     win.Show(True) 

if __name__ == "__main__": 
    app = wx.App(0) 
    frame = MDIFrame() 
    frame.CenterOnScreen() 
    frame.Show() 
    app.MainLoop() 

Example Image http://imageshack.us/a/img534/280/mdip.png

回答

0

也許你可以試試AuiMDIParentFrame,AuiMDIChildFrame是ParentFrame.here標籤代碼:

#!/usr/bin/env python 
#-*- encoding: gb18030 -*- 
import wx 
import wx.aui 

#---------------------------------------------------------------------- 

class ParentFrame(wx.aui.AuiMDIParentFrame): 
    def __init__(self,parent): 
     wx.aui.AuiMDIParentFrame.__init__(self, parent,-1, 
              title="AuiMDIParentFrame", 
              size=(640,480), 
              style=wx.DEFAULT_FRAME_STYLE) 
     self.count = 0 
     # tell FrameManager to manage this frame 

     #creat menu 
     mb = self.MakeMenuBar() 
     self.SetMenuBar(mb) 

     #creat statubar 
     self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP) 
     self.statusbar.SetStatusWidths([-2, -3]) 
     self.statusbar.SetStatusText("Ready", 0) 
     self.statusbar.SetStatusText("Welcome To wxPython!", 1) 

     #create toolbar 


    def MakeMenuBar(self): 
     mb = wx.MenuBar() 
     menu = wx.Menu() 
     item = menu.Append(-1, "New child window\tCtrl-N") 
     self.Bind(wx.EVT_MENU, self.OnNewChild, item) 
     item = menu.Append(-1, "Close parent") 
     self.Bind(wx.EVT_MENU, self.OnDoClose, item) 
     mb.Append(menu, "&File") 
     return mb 

    def OnNewChild(self, evt): 
     self.count += 1 
     try: 
      child = ChildFrame(self, self.count) 
     except Exception,data: 
      print data 
     child.Show() 

    def OnDoClose(self, evt): 
     self.Close() 


#---------------------------------------------------------------------- 

class ChildFrame(wx.aui.AuiMDIChildFrame): 
    def __init__(self, parent, count): 
     wx.aui.AuiMDIChildFrame.__init__(self, parent, -1, 
             title="Child: %d" % count) 
     mb = parent.MakeMenuBar() 
     menu = wx.Menu() 
     item = menu.Append(-1, "This is child %d's menu" % count) 
     mb.Append(menu, "&Child") 
     self.SetMenuBar(mb) 

     p = wx.Panel(self) 
     wx.StaticText(p, -1, "This is child %d" % count, (10,10)) 
     p.SetBackgroundColour('light blue') 

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

     wx.CallAfter(self.Layout) 


if __name__ == '__main__': 
    App = wx.App() 
    frame = ParentFrame(None) 
    App.SetTopWindow(frame) 
    frame.Show() 
    App.MainLoop()