wxPython - Notebook 类

  • 简述

    wxPython 类库包含各种“书”控件。一种book control允许用户在框架中的各种面板之间切换。这在要呈现大量数据时特别有用。
    书类继承自wx.BookCtrlBase班级。可以使用以下类型的书籍控件 -
    • wx.Notebook
    • wx.Choicebook
    • wx.Listbook
    • wx.Treebook
    wx.Notebook小部件呈现一个选项卡式控件。框架中的一个 Notebook 对象具有一个或多个选项卡(称为页面),每个选项卡都有一个显示控件布局的面板。用户可以通过单击相应的选项卡标题在页面之间切换。
    Notebook 类构造函数采用熟悉的参数如下 -
    
    wx.Notebook(parent, id, pos, size, style)
    
    以下样式参数可用于自定义小部件 -
    序列号 参数及说明
    1
    wx.NB_TOP
    将标签放在顶部
    2
    wx.NB_LEFT
    将选项卡放在左侧
    3
    wx.NB_RIGHT
    将选项卡放在右侧
    4
    wx.NB_BOTTOM
    将标签放在Notebook页面下方而不是Notebook页面上方
    5
    wx.NB_FIXEDWIDTH
    所有选项卡将具有相同的宽度
    6
    wx.NB_MULTILINE
    可以有几行选项卡
    Notebook 类的成员函数 -
    序列号 功能与说明
    1
    OnSelChange()
    页面选择改变时调用的处理函数
    2
    SetPadding()
    设置每个页面的图标和标签周围的空间量,以像素为单位
    3
    GetSelection()
    返回当前选择的页面
    4
    SetSelection()
    将选择设置为给定页面,返回上一个选择
    5
    AddPage()
    添加新页面
    6
    DeletePage()
    删除给定索引的页面
    7
    InsertPage()
    在给定索引处插入一个新选项卡
    8
    RemovePage()
    删除页面而不删除
    为此类定义的事件绑定器是 -
    序列号 事件和描述
    1
    EVT_NOTEBOOK_PAGE_CHANGED()
    页面选择已更改
    2
    EVT_NOTEBOOK_PAGE_CHANGING()
    页面选择即将更改
  • 例子

    以下示例在顶级框架中部署 Notebook 控件。
    
    nb = wx.Notebook(self) 
    
    设计了两个基于 wx.Panel 的类。首先,在其中放置一个多行 TextCtrl。
    
    class MyPanel1(wx.Panel): 
       def __init__(self, parent): 
          super(MyPanel1, self).__init__(parent) 
          text = wx.TextCtrl(self, style = wx.TE_MULTILINE, size = (250,150))
    
    第二个,显示一个具有三个单选按钮的 RadioBox。
    
    class MyPanel2(wx.Panel): 
       def __init__(self, parent): 
          super(MyPanel2, self).__init__(parent) 
          lblList = ['Value X', 'Value Y', 'Value Z']         
          rbox = wx.RadioBox(self, label = 'RadioBox', pos = (25,10), choices = lblList,
             majorDimension = 1, style = wx.RA_SPECIFY_ROWS)
    
    这两个面板类的对象作为页面添加到顶级框架的 Notebook 中。
    
    nb.AddPage(MyPanel1(nb),"Editor") 
    nb.AddPage(MyPanel2(nb),"RadioButtons")
    
    完整的代码如下 -
    
    import wx
      
    class MyDialog(wx.Dialog): 
       def __init__(self, parent, title): 
          super(MyDialog, self).__init__(parent, title = title, size = (250,150)) 
          panel = wx.Panel(self) 
          self.btn = wx.Button(panel, wx.ID_OK, label = "ok", size = (50,20), pos = (75,50)) 
         
    class Mywin(wx.Frame): 
                
       def __init__(self, parent, title): 
          super(Mywin, self).__init__(parent, title = title, size = (250,150))  
          self.InitUI() 
             
       def InitUI(self):    
          nb = wx.Notebook(self) 
          nb.AddPage(MyPanel1(nb),"Editor") 
          nb.AddPage(MyPanel2(nb),"RadioButtons") 
          self.Centre() 
          self.Show(True) 
          
    class MyPanel1(wx.Panel): 
       def __init__(self, parent): 
          super(MyPanel1, self).__init__(parent) 
          text = wx.TextCtrl(self, style = wx.TE_MULTILINE, size = (250,150)) 
          
    class MyPanel2(wx.Panel): 
       def __init__(self, parent): 
          super(MyPanel2, self).__init__(parent) 
          lblList = ['Value X', 'Value Y', 'Value Z']         
          rbox = wx.RadioBox(self, label = 'RadioBox', pos = (25,10), choices = lblList,
             majorDimension = 1, style = wx.RA_SPECIFY_ROWS) 
         
    ex = wx.App() 
    Mywin(None,'NoteBook demo') 
    ex.MainLoop()
    
    上面的代码产生以下输出 -
    Notebook演示输出