Pygtk 简明教程

PyGTK - Notebook Class

Notebook 控件是一个标签容器。此容器中的每个标签持有不同的页面,而这些页面以重叠的方式显示。点击标签页的标签可以显示任何需要的页面。可对标签进行配置,将其显示在顶部、底部或左右两侧。放置有其他控件的容器控件或单个控件放置在每个页面下方。

如果数据在单个视图中显示时太大,则将其分组到不同的页面中,每个页面放置在 Notebook 控件的一个标签页下。这种类型的控件应用非常广泛。例如,Internet 浏览器就使用这种标签显示在不同的标签页中呈现不同的页面。

以下是 gtk.Notebook 类的构造函数 -

gtk.Notebook()

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

  1. append_page(child, label) - 它将包含控件的页面追加到记事本,由 tab_label 指定为标签页上的标签。如果 tab_label 可以是 None,则使用默认标签。

  2. insert_page(child, label, position) - 它将一个页面插入到记事本中,位置由 position 指定。

  3. remove_page(index) - 它删除指定索引处的页面。

  4. get_current_page() - 它返回当前页面的页面索引。

  5. set_current_page(index) - 它切换到索引指定的页面号。

  6. set_show_tabs() - 如果为 false,则选项卡将不可见。默认情况下,它为 True。

  7. set_tab_pos(pos) - 它设置绘制记事本中用于切换页面的选项卡的边缘。预定义常量为 - gtk.POS_LEFTgtk.POS_RIGHTgtk.POS_TOPgtk.POS_BOTTOM

  8. set_tab_label_text(child, text) - 它创建一个新的标签,并使用指定标签文本,然后将该文本作为包含 child 的页面的选项卡标签进行设置。

gtk.Notebook 控件发送以下信号 -

change-current-page

当发出向后翻页或向前翻页请求时,将发出此信号

focus-tab

当通过制表键改变焦点时,将发出此信号。

page-added

当将页面添加到记事本时,将发出此信号。

page-removed

当从记事本中删除页面后,将发出此信号。

select-page

当选择新的子页面时,将发出此信号。

switch-page

这在笔记本页面变更时发出。

Example

在以下示例中,一个带三个页面的 gtk.Notebook 被置于一个顶级 gtk.Window 中。第一页包含一个 VBox,其中打包了一个标签和一个输入域。标记为“资质”的第二页包含一个 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 demo
notebook