PyGTK - Notebook 类

  • 简述

    Notebook 小部件是一个选项卡式容器。此容器中的每个选项卡都包含一个不同的页面,并且这些页面以重叠的方式显示。通过单击选项卡的标签,可以看到任何所需的页面。标签可以配置为显示在顶部或底部或左侧或右侧。每个页面下放置一个容器小部件,其中放置了其他小部件或单个小部件。
    如果要在一个视图中显示的数据太大,则将其分组在不同的页面中,每个页面都放置在 Notebook 小部件的一个选项卡下。这种类型的控制应用非常广泛。例如,Internet 浏览器使用此选项卡式显示在不同选项卡中呈现不同页面。
    以下是 gtk.Notebook 类的构造函数 -
    
    gtk.Notebook()
    
    以下是 gtk.Notebook 类的常用方法 -
    • append_page(child, label)- 这会将一个页面附加到笔记本,其中包含由 tab_label 指定的小部件作为选项卡上的标签。如果 tab_label 可以为 None 以使用默认标签。
    • insert_page(child, label, 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,其中包含一个标签和条目字段。标记为“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.Moognment(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()
    
    执行后,上面的代码显示一个三页的笔记本 -
    笔记本演示 笔记本