---
name: "notebook"
section: "3tcl"
platform: "linux"
package: "tk-tile"
version: "0.8.2-2.1"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/notebook/3tcl"
---

# notebook(3tcl)

Multi-paned container widget

## NAME

ttk::notebook - Multi-paned container widget

## SYNOPSIS

```
ttk::notebook pathName ?options...?
pathName add window ?options...?
pathName insert index window ?options...?
```

## DESCRIPTION

A **ttk::notebook** widget manages a collection of windows and displays a single one at a time. Each slave window is associated with a *tab*, which the user may select to change the currently-displayed window. -class	-cursor	-takefocus	-style

## WIDGET OPTIONS

\[**-height** *height Height*\] If present and greater than zero,  specifies the desired height of the pane area (not including internal padding or tabs). Otherwise, the maximum height of all panes is used. \[**-padding** *padding Padding*\] Specifies the amount of extra space to add around the outside of the notebook. The padding is a list of up to four length specifications  *left top right bottom*. If fewer than four elements are specified,  *bottom* defaults to *top*, *right* defaults to *left*, and  *top* defaults to *left*. \[**-width** *width Width*\] If present and greater than zero,  specifies the desired width of the pane area (not including internal padding). Otherwise, the maximum width of all panes is used.

## TAB OPTIONS

The following options may be specified for individual notebook panes: \[**-state** *state State*\] Either **normal**, **disabled** or **hidden**.   If **disabled**, then the tab is not selectable. If **hidden**, then the tab is not shown. \[**-sticky** *sticky Sticky*\] Specifies how the slave window is positioned within the pane area. Value is a string containing zero or more of the characters **n, s, e,** or **w**. Each letter refers to a side (north, south, east, or west)  that the slave window will "stick" to, as per the **grid** geometry manager. \[**-padding** *padding Padding*\] Specifies the amount of extra space to add between the notebook and this pane. Syntax is the same as for the widget **-padding** option. \[**-text** *text Text*\] Specifies a string to be displayed in the tab. \[**-image** *image Image*\] Specifies an image to display in the tab. See *widget(n)* for details. \[**-compound** *compound Compound*\] Specifies how to display the image relative to the text, in the case both **-text** and **-image** are present. See *[label(n)](/label/n.md)* for legal values. \[**-underline** *underline Underline*\] Specifies the integer index (0-based) of a character to underline  in the text string. The underlined character is used for mnemonic activation if **ttk::notebook::enableTraversal** is called.

## WIDGET COMMAND

- *pathname* **add** *window* ?*options...*?

  Adds a new tab to the notebook. See **TAB OPTIONS** for the list of available *options*. If *window* is currently managed by the notebook but hidden, it is restored to its previous position.

- *pathname* **configure** ?*options*?

  See *widget(n)*.

- *pathname* **cget** *option*

  See *widget(n)*.

- *pathname* **forget** *tabid*

  Removes the tab specified by *tabid*, unmaps and unmanages the associated window.

- *pathname* **hide** *tabid*

  Hides the tab specified by *tabid*. The tab will not be displayed, but the associated window remains managed by the notebook and its configuration remembered. Hidden tabs may be restored with the **add** command.

- *pathname* **index** *tabid*

  Returns the numeric index of the tab specified by *tabid*, or the total number of tabs if *tabid* is the string "**end**".

- *pathname* **insert** *pos* *subwindow* *options...*

  Inserts a pane at the specified position. *pos* is either the string **end**, an integer index,  or the name of a managed subwindow. If *subwindow* is already managed by the notebook,  moves it to the specified position. See **TAB OPTIONS** for the list of available options.

- *pathname* **instate** *statespec* ?*script...*?

  See *widget(n)*.

- *pathname* **select** ?*tabid*?

  Selects the specified tab.   The associated slave window will be displayed, and the previously-selected window (if different) is unmapped. If *tabid* is omitted, returns the widget name of the currently selected pane.

- *pathname* **state** ?*statespec*?

  See *widget(n)*.

- *pathname* **tab** *tabid* ?*-option* ?*value ...*

  Query or modify the options of the specific tab. If no *-option* is specified, returns a dictionary of the tab option values. If one *-option* is specified, returns the value of that *option*. Otherwise, sets the *-option*s to the corresponding *value*s. See **TAB OPTIONS** for the available options.

- *pathname* **tabs**

  Returns the list of windows managed by the notebook.

## KEYBOARD TRAVERSAL

To enable keyboard traversal for a toplevel window containing a notebook widget *$nb*, call: ttk::notebook::enableTraversal $nb

This will extend the bindings for the toplevel window containing the notebook as follows:

- •

  **Control-Tab** selects the tab following the currently selected one.

- •

  **Shift-Control-Tab** selects the tab preceding the currently selected one.

- •

  **Alt-K**, where **K** is the mnemonic (underlined) character of any tab, will select that tab.

Multiple notebooks in a single toplevel may be enabled for traversal, including nested notebooks.   However, notebook traversal only works properly if all panes are direct children of the notebook.

## TAB IDENTIFIERS

The *tabid* argument to the above commands may take any of the following forms:

- •

  An integer between zero and the number of tabs;

- •

  The name of a slave window;

- •

  A positional specification of the form "@*x*,*y*", which identifies the tab

- •

  The literal string "**current**", which identifies the currently-selected tab; or:

- •

  The literal string "**end**", which returns the number of tabs  (only valid for "*pathname* **index**").

## VIRTUAL EVENTS

The notebook widget generates a **\<\<NotebookTabChanged\>\>** virtual event after a new tab is selected.

## EXAMPLE

notebook .nb .nb add \[frame .nb.f1\] -text "First tab" .nb add \[frame .nb.f2\] -text "Second tab" .nb select .nb.f2 ttk::notebook::enableTraversal .nb

## SEE ALSO

widget(n), [grid(n)](/grid/n.md)

## KEYWORDS

pane, tab
