PyGTK NoteBook类
笔记本小部件是一个标签式的容器。这个容器中的每个标签都有一个不同的页面,这些页面以重叠的方式被看到。任何需要的页面都可以通过点击标签的标签来实现。标签可以被配置为显示在顶部或底部,或在左边或右边。一个带有其他小部件的容器小部件或一个单一的小部件被放置在每个页面下。
如果要显示的数据在一个视图中太大了,它被分组在不同的页面中,每个页面被放置在一个笔记本小部件的一个标签下。这种类型的控件使用非常广泛。例如,互联网浏览器使用这种标签式显示,在不同的标签中呈现不同的页面。
下面是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() – 如果是假的,标签将不可见。默认情况下是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 widget会发出以下信号 –
change-current-page | 当向前翻页或向后翻页的请求被发出时,会发出这个信号 |
---|---|
focus-tab | 当焦点因标签而改变时,发出这个信号。 |
page-added | 当一个页面被添加到笔记本上时,发出此信息。 |
page-removed | 从笔记本中删除一个页面后发出的信息。 |
select-page | 当一个新的子页被选中时,发出此消息。 |
switch-page | 当笔记本的页面被改变时,发出这个消息。 |
例子
在下面的例子中,一个有三个页面的gtk.Notebook被放置在一个顶层的gtk.Window中。第一页有一个VBox,其中有一个标签和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()
执行后,上述代码会显示一个有三页的笔记本: