PyGTK - Notebook 笔记本类

Notebook 笔记本小部件是一个选项卡式容器。 此容器中的每个选项卡都包含一个不同的页面,并且这些页面以重叠的方式显示。 通过单击选项卡的标签可以看到任何所需的页面。 标签可以配置为显示在顶部或底部或左侧或右侧。 每个页面下方放置一个容器小部件,其中放置其他小部件或单个小部件。

如果在一个视图中要显示的数据太大,它会被分组到不同的页面中,每个页面都放在笔记本小部件的一个选项卡下。 这种类型的控件使用非常广泛。 例如,Internet 浏览器使用此选项卡式显示在不同选项卡中呈现不同页面。

下面是gtk.Notebook类的构造函数 −

gtk.Notebook()

以下是gtk.Notebook类常用的方法 −

  • append_page(child, label) − 这会将一个页面附加到包含由 tab_label 指定为选项卡标签的小部件的笔记本。 如果 tab_label 可以是 None 以使用默认标签。

  • insert_page(child, label, position) − 这会在 position 指定的位置向笔记本中插入一页。

  • remove_page(index) − 这将删除指定索引处的页面。

  • get_current_page() − 这将返回当前页面的页面索引。

  • set_current_page(index) − 这将切换到索引指定的页码。

  • set_show_tabs() − 如果为 false,选项卡将不可见。 默认情况下为 True。

  • set_tab_pos(pos) − 这将设置用于在笔记本中切换页面的选项卡绘制的边缘。 预定义的常量是 −

    • gtk.POS_LEFT

    • gtk.POS_RIGHT

    • gtk.POS_TOP

    • gtk.POS_BOTTOM

  • set_tab_label_text(child, text) − 这将创建一个具有指定文本的新标签,并将其设置为包含子项的页面的选项卡标签。

gtk.Notebook 小部件发出以下信号 −

change-current-page 发出向前翻页或向后翻页请求时发出
focus-tab 当通过 tab 键改变焦点时会发出。
page-added 将页面添加到笔记本时会发出此消息。
page-removed 这是在从笔记本中删除页面后发出的。
select-page 选择新的子页面时发出。
switch-page 这会在笔记本页面更改时发出。

示例

在下面的示例中,一个具有三个页面的 gtk.Notebook 被放置在顶层 gtk.Window 中。 第一页包含一个 VBox,其中包含标签和 Entry 字段。 标记为"qualifications"的第二页有一个 HButtonBox,其中添加了三个互斥的 RadioButton 小部件。 第三页有一个 TextView 对象。 页面标签显示在顶部。

观察下面的代码 −

import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Notebook Demo")
      self.set_default_size(250, 200)
		
      nb = gtk.Notebook()
      nb.set_tab_pos(gtk.POS_TOP)
      vbox = gtk.VBox(False, 5)
		
      vb = gtk.VBox()
      hbox = gtk.HBox(True, 3)
		
      valign = gtk.Alignment(0.5,0.25, 0, 0)
      lbl = gtk.Label("Name of student")
		
      vb.pack_start(lbl, True, True, 10)
      text = gtk.Entry()
		
      vb.pack_start(text, True, True, 10)
      valign.add(vb)
		
      vbox.pack_start(valign)
      nb.append_page(vbox)
      nb.set_tab_label_text(vbox, "Name")
      hb = gtk.HButtonBox()
		
      btn1 = gtk.RadioButton(None,"Degree")
      hb.add(btn1)
		
      btn2 = gtk.RadioButton(btn1,"P.G.")
      hb.add(btn2)
		
      btn3 = gtk.RadioButton(btn1,"Doctorate")
      hb.add(btn3)
		
      nb.append_page(hb)
      nb.set_tab_label_text(hb, "Qualification")
		
      tv = gtk.TextView()
      nb.append_page(tv)
      nb.set_tab_label_text(tv, "about")
		
      self.add(nb)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
if __name__ == '__main__':
   PyApp()
   gtk.main()

执行后,上面的代码显示了一个三页的笔记本 −

NoteBook 演示 NoteBook