wxPython – 笔记本类

wxPython – 笔记本类

wxPython类库包含各种 “书 “控件。一个 书本控件 允许用户在一个框架中的各种面板之间进行切换。当需要展示大量的数据时,这一点特别有用。

书籍类继承自 wx.BookCtrlBase 类。有以下类型的Notebook控制可用 −

  • wx.Notebook
  • wx.Choicebook
  • wx.Listbook
  • wx.Treebook

wx.Notebook widget呈现了一个标签式控件。一个框架中的一个笔记本对象有一个或多个标签(称为页),每个标签都有一个显示控件布局的面板。用户可以通过点击各自的标签标题在页面之间切换。

笔记本类构造函数需要熟悉的参数,如下所示

wx.Notebook(parent, id, pos, size, style)

以下是可用于定制小部件的样式参数-

下面是最常用的样式参数 。 S.N. 参数和描述
1 wx.NB_TOP 将标签放在顶部
2 wx.NB_LEFT 将标签放在左侧
3 wx.NB_RIGHT 在右侧放置标签
4 wx.NB_BOTTOM 将标签放在笔记本页面的下方,而不是笔记本页面的上方
5 wx.NB_FIXEDWIDTH 所有的标签都有相同的宽度。
6 wx.NB_MULTILINE 可以有几行的标签

笔记本类的成员函数 –

下面给出的是NoteBook最常用的函数 。 S.N. 功能和描述
1 OnSelChange() 当页面选择被改变时调用的处理程序函数
2 SetPadding() 设置每个页面的图标和标签周围的空间,单位是像素。
3 GetSelection() 返回当前选择的页面
4 SetSelection() 设置选择到给定的页面,返回之前的选择。
5 AddPage() 添加一个新的页面
6 DeletePage() 删除一个指定索引的页面
7 InsertPage() 在给定的索引中插入一个新的标签
8 RemovePage() 删除页面,但不删除

为这个类定义的事件绑定器是-

下面给出的是NoteBook最常用的事件 。 S.N. 事件和描述
1 EVT_NOTEBOOK_PAGE_CHANGED() 页面选择被改变了
2 EVT_NOTEBOOK_PAGE_CHANGING() 页面选择即将被改变

例子

下面的例子在一个顶层框架中部署了一个笔记本控件。

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)

这两个面板类的对象被添加为顶层框架上的笔记本的页面。

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()

上述代码产生的输出结果如下 –

wxPython - 笔记本类

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程