Object Hierarchy:

Object hierarchy for Notebook


[ CCode ( type_id = "gtk_notebook_get_type ()" ) ]
public class Notebook : Widget, Accessible, Buildable, ConstraintTarget

The Notebook widget is a layout container whose children are pages that can be switched between using tab labels along one edge.

There are many configuration options for GtkNotebook. Among other things, you can choose on which edge the tabs appear (see set_tab_pos), whether, if there are too many tabs to fit the notebook should be made bigger or scrolling arrows added (see set_scrollable), and whether there will be a popup menu allowing the users to switch pages. (see popup_enable , popup_disable)

GtkNotebook as GtkBuildable

The GtkNotebook implementation of the Buildable interface supports placing children into tabs by specifying “tab” as the “type” attribute of a <child> element. Note that the content of the tab must be created before the tab can be filled. A tab child can be specified without specifying a <child> type attribute.

To add a child widget in the notebooks action area, specify "action-start" or “action-end” as the “type” attribute of the <child> element.

An example of a UI definition fragment with GtkNotebook:

<object class="GtkNotebook">
<object class="GtkLabel" id="notebook-content">
<property name="label">Content</property>
<child type="tab">
<object class="GtkLabel" id="notebook-tab">
<property name="label">Tab</property>

CSS nodes

│ ├── [<action widget>]
│ ├── tabs
│ │ ├── [arrow]
│ │ ├── tab
│ │ │ ╰── <tab label>
┊ ┊ ┊
│ │ ├── tab[.reorderable-page]
│ │ │ ╰── <tab label>
│ │ ╰── [arrow]
│ ╰── [<action widget>]

╰── stack
├── <child>

╰── <child>
abs` which contains one subnode per tab with name `tab`.

If action widgets are present, their CSS nodes are placed next to the `tabs` node. If the notebook is scrollable, CSS nodes with name `arrow` are placed as first and last child of the `tabs` node.

The main node gets the `.frame` style class when the notebook has a border (see set_show_border).

The header node gets one of the style class `.top`, `.bottom`, `.left` or `.right`, depending on where the tabs are placed. For reorderable pages, the tab node gets the `.reorderable-page` class.

A `tab` node gets the `.dnd` style class while it is moved with drag-and-drop.

The nodes are always arranged from left-to-right, regardless of text direction.


GtkNotebook uses the following roles:

  • gtk_accessible_role_group for the notebook widget
  • gtk_accessible_role_tab_list for the list of tabs
  • gtk_accessible_role_tab role for each tab
  • gtk_accessible_role_tab_panel for each page

Namespace: Gtk
Package: gtk4



Creation methods:



Inherited Members:

All known members inherited from class Gtk.Widget