PyGTK Notebook类
Notebook小部件是一个带有标签的容器。该容器中的每个标签都包含了一个不同的页面,并且这些页面是以重叠的方式显示的。通过点击标签的标签来使任何所需的页面可见。可以配置标签的标签显示在顶部或底部或左侧或右侧。每个页面下都放置了其他小部件或一个单一的小部件的容器小部件。
如果要显示的数据在一个视图中太大,可以将其分组到不同的页面中,每个页面都放置在Notebook小部件的一个标签下。这种类型的控件被广泛使用。例如,互联网浏览器使用这种选项卡式的显示方式来在不同的选项卡中呈现不同的页面。
以下是gtk.Notebook类的一个构造函数−
gtk.Notebook()
以下是gtk.Notebook类常用的方法:
- append_page(child, label) - 这个方法将包含在标签页上的小部件child添加到notebook中,标签为tab_label。如果tab_label为空,则使用默认标签。
-
insert_page(child, label, position) - 这个方法在notebook中的指定位置插入一个标签页。
-
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) - 这个方法创建一个新的标签,使用指定的文本text,并将其设置为包含child的标签页的标签。
gtk.Notebook 小部件发出以下信号:
change-current-page | 当发出页面前进或页面后退请求时发出此信号。 |
---|---|
focus-tab | 当通过制表键切换焦点时发出此信号。 |
page-added | 当页面被添加到笔记本时发出此信号。 |
page-removed | 在从笔记本中删除页面后发出此信号。 |
select-page | 当选择一个新的子页面时发出此信号。 |
switch-page | 当笔记本页面发生变化时发出此信号。 |
示例
在下面的示例中,一个包含三个页面的gtk.Notebook被放置在一个toplevel gtk.Window中。第一个页面包含一个VBox,其中包含一个标签和输入框。第二个页面标有“qualifications”,其中包含了三个互斥的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()
执行上面的代码后,会显示一个带有三个页面的笔记本。