Toolbar
Toolbar is a horizontal toolbar container for icon buttons, labels, separators, and custom widgets.
It optionally supports window control buttons (minimize, maximize, close) and window dragging for custom titlebars.
Quick start
import bootstack as bs
app = bs.App()
toolbar = bs.Toolbar(app, surface="chrome")
toolbar.pack(fill="x")
toolbar.add_button(icon="list", command=lambda: print("menu"))
toolbar.add_separator()
toolbar.add_label(text="My App", font="heading-md")
toolbar.add_spacer()
toolbar.add_button(icon="gear", command=lambda: print("settings"))
app.mainloop()
When to use
Use Toolbar when:
-
you need a horizontal bar with icon buttons and labels
-
you want a custom titlebar with window controls
-
you're building a toolbar for an AppShell or standalone layout
Consider a different control when:
-
you need tab-based navigation - use Tabs
-
you need a menu bar - use
MenuBar
Appearance
Density
# Standard buttons
toolbar = bs.Toolbar(app, density="default")
# Smaller buttons
toolbar = bs.Toolbar(app, density="compact")
Window controls
toolbar = bs.Toolbar(
app,
show_window_controls=True,
draggable=True,
)
Examples and patterns
Adding items
Items are added left-to-right. Use add_spacer() to push subsequent items to the right.
toolbar.add_button(icon="arrow-left", command=go_back)
toolbar.add_separator()
toolbar.add_label(text="Page Title", font="heading-md")
toolbar.add_spacer()
toolbar.add_button(icon="sun", command=bs.toggle_theme)
Custom widgets
search = bs.Entry(toolbar.content)
toolbar.add_widget(search)
Accessing window controls
toolbar.minimize_button # Button or None
toolbar.maximize_button # Button or None
toolbar.close_button # Button or None