📜  PyGTK-笔记本类

📅  最后修改于: 2020-11-08 07:57:46             🧑  作者: Mango


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

如果要显示的数据在一个视图中太大,则会将其分为不同的页面,每个页面都放在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) -这将使用指定的文本创建一个新标签,并将其设置为包含child的页面的标签标签。

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

change-current-page This is emitted when the page forward or page backward request is issued
focus-tab This is emitted when the focus is changed by tabbing.
page-added This is emitted when a page is added to the notebook.
page-removed This is emitted after a page is removed from the notebook.
select-page This is emitted when a new child page is selected.
switch-page This is emitted when the notebook page is changed.

在以下示例中,将具有三页的gtk.Notebook放置在顶层gtk.Window中。第一页包含一个VBox,其中包装了Label和Entry字段。标记为“资格”的第二页具有一个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()

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

笔记本演示笔记本