Toolbar Button
#| '!! shinylive warning !!': |
#| shinylive does not work in self-contained HTML documents.
#| Please set `embed-resources: false` in your metadata.
#| standalone: true
#| components: [viewer]
#| viewerHeight: 200
from faicons import icon_svg
from shiny.express import input, render, ui
with ui.card(full_screen=True):
with ui.card_header():
"Document Actions"
with ui.toolbar(align="right"):
ui.toolbar_input_button(
id="label_only",
label="Label Only",
)
ui.toolbar_input_button(
id="icon_and_label",
label="Icon + Label",
icon=icon_svg("download"),
show_label=True,
)
ui.toolbar_input_button(
id="icon_only",
label="Icon Only",
icon=icon_svg("floppy-disk"),
)
@render.text
def button_status():
return f"Buttons clicked - Label: {input.label_only()}, Icon: {input.icon_only()}, Both: {input.icon_and_label()}"from faicons import icon_svg
from shiny.express import input, render, ui
with ui.card(full_screen=True):
with ui.card_header():
"Document Actions"
with ui.toolbar(align="right"):
ui.toolbar_input_button(
id="label_only",
label="Label Only",
)
ui.toolbar_input_button(
id="icon_and_label",
label="Icon + Label",
icon=icon_svg("download"),
show_label=True,
)
ui.toolbar_input_button(
id="icon_only",
label="Icon Only",
icon=icon_svg("floppy-disk"),
)
@render.text
def button_status():
return f"Buttons clicked - Label: {input.label_only()}, Icon: {input.icon_only()}, Both: {input.icon_and_label()}"from faicons import icon_svg
from shiny import App, render, ui
app_ui = ui.page_fixed(
ui.card(
ui.card_header(
"Document Actions",
ui.toolbar(
ui.toolbar_input_button(
id="label_only",
label="Label Only",
),
ui.toolbar_input_button(
id="icon_and_label",
label="Icon + Label",
icon=icon_svg("download"),
show_label=True,
),
ui.toolbar_input_button(
id="icon_only",
label="Icon Only",
icon=icon_svg("floppy-disk"),
),
align="right",
),
),
ui.card_body(
ui.output_text("button_status"),
),
full_screen=True,
)
)
def server(input, output, session):
@render.text
def button_status():
return f"Buttons clicked - Label: {input.label_only()}, Icon: {input.icon_only()}, Both: {input.icon_and_label()}"
app = App(app_ui, server)Relevant Functions
-
ui.toolbar_input_button
ui.toolbar_input_button(id, label, *, icon=None, show_label=MISSING, tooltip=MISSING, disabled=False, border=False, **kwargs) -
ui.update_toolbar_input_button
ui.update_toolbar_input_button(id, *, label=None, show_label=None, icon=None, disabled=None, session=None) -
ui.toolbar
ui.toolbar(*args, align="right", gap=None, width=None)
Details
A toolbar button is a compact button designed for use in toolbars within card headers, footers, and other constrained spaces.
To add a toolbar button to your app:
- Add
ui.toolbar()to create a toolbar container, typically withinui.card_header()or another compact location. - Inside the toolbar, add
ui.toolbar_input_button()with anidandlabel. - Optionally add an
iconparameter. When an icon is provided withoutshow_label=True, only the icon is visible and a tooltip with the label text appears on hover.
The value of a toolbar button is accessible as a reactive value. To access the value:
- Use
input.<button_id>()(e.g.,input.save()) to access the click count. The value is an integer representing the number of times the button has been clicked.
Accessibility
Always provide a meaningful label even when using icon-only buttons. The label is used for screen readers and tooltips, ensuring your app is accessible to all users.
See Also: Toolbar | Action Button