Notebook Example
An example of the Notebook widget.
This example demonstrates the use of the Notebook widget. A Notebook
displays its children as a tabbed control, where one child is visible
at a time. The children of a Notebook must be instances of Page and
parent of a Page must be a Notebook. A Page can have at most one
child which must be an instance of Container. This Container is
expanded to fill the available space in the page. A Notebook is layed
out using constraints just like normal constraints enabled widgets.
Implementation Notes:
Changing the tab style of the
Notebookdynamically is not supported on Wx. Close buttons on tabs is not supported on Wx when using the ‘preferences’ tab style.
Screenshot
Example Enaml Code
#------------------------------------------------------------------------------
# Copyright (c) 2013-2025, Nucleic Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
#------------------------------------------------------------------------------
""" An example of the `Notebook` widget.
This example demonstrates the use of the `Notebook` widget. A `Notebook`
displays its children as a tabbed control, where one child is visible
at a time. The children of a `Notebook` must be instances of `Page` and
parent of a `Page` must be a `Notebook`. A `Page` can have at most one
child which must be an instance of `Container`. This `Container` is
expanded to fill the available space in the page. A `Notebook` is layed
out using constraints just like normal constraints enabled widgets.
Implementation Notes:
Changing the tab style of the `Notebook` dynamically is not
supported on Wx. Close buttons on tabs is not supported on
Wx when using the 'preferences' tab style.
<< autodoc-me >>
"""
from enaml.widgets.api import (
Window, Notebook, Page, Container, PushButton, Field, Html, CheckBox
)
enamldef Main(Window):
Container:
Notebook: nbook:
tab_style = 'preferences'
Page:
title = 'Foo Page'
closable = False
tool_tip = 'Foo Page here'
Container:
PushButton:
text = 'Open Bar Page'
enabled << not bar.visible
clicked :: bar.open()
PushButton:
text = 'Open Baz Page'
enabled << not baz.visible
clicked :: baz.open()
PushButton:
text = 'Go to Bar Page'
enabled << bar.visible
clicked ::
nbook.selected_tab = 'bar_page'
PushButton:
text = 'Go to Baz Page'
enabled << baz.visible
clicked ::
nbook.selected_tab = 'baz_page'
CheckBox:
text = 'Tabs Closable'
checked := nbook.tabs_closable
CheckBox:
text = 'Tabs Movable'
checked := nbook.tabs_movable
CheckBox:
text = 'Document Style Tabs'
checked << nbook.tab_style == 'document'
toggled ::
if checked:
nbook.tab_style = 'document'
else:
nbook.tab_style = 'preferences'
Page: bar:
title = 'Bar Page'
name = 'bar_page'
Container:
Field:
pass
Field:
pass
Field:
pass
Page: baz:
title = 'Baz Page'
name = 'baz_page'
Container:
padding = 0
Html:
source = '<h1><center>Hello World!</center></h1>'