笔记本类(Notebook Class)
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) - 这将创建一个带有指定文本的新标签,并将其设置为包含child的页面的选项卡标签。
gtk.Notebook小部件发出以下信号 -
change-current-page | 发出页面转发或页面后退请求时会发出此信息 |
focus-tab | 通过Tab键更改焦点时会发出此信号。 |
page-added | 将页面添加到笔记本时会发出此信息。 |
page-removed | 从笔记本中删除页面后会发出此消息。 |
select-page | 选择新的子页面时会发出此信息。 |
switch-page | 更改笔记本页面时会发出此信息。 |
例子 (Example)
在以下示例中,将具有三个页面的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()
执行时,上面的代码显示一个三页的笔记本 -