Widget Reference¶
All widgets are created through the factory namespace returned by
session.get_widgets():
Widgets = session.get_widgets()
btn = Widgets.Button("Click me") # sync
btn = await Widgets.Button("Click me") # async
Every widget inherits common base methods (see Base Methods below), plus its own methods listed in each section.
Base Methods¶
All widgets (except Timer and FileDialog) have these methods:
Method |
Description |
|---|---|
|
Set widget size in pixels. |
|
Return |
|
Make the widget visible. |
|
Hide the widget. |
|
Return visibility state. |
|
Enable or disable the widget. |
|
Return enabled state. |
|
Set tooltip text. |
|
Set padding in pixels. |
|
Set border width. |
|
Set border color. |
|
Set font properties. Pass |
|
Give focus to this widget. |
|
Set the mouse cursor. |
|
Register a custom cursor from an image URL or file path. |
|
Remove the widget from the browser and Python registry. |
Container widgets also have get_children().
Callback Registration¶
All widgets support two callback registration methods:
# on() -- handler receives callback args only
btn.on("activated", lambda: print("clicked"))
# add_callback() -- handler receives (widget, *callback_args)
btn.add_callback("activated", lambda w: print(f"{w} clicked"))
See Callback System for details.
Layout Containers¶
VBox¶
Vertical box layout.
Options: (none)
Methods:
add_widget(child, stretch),set_spacing(gap)Callbacks: (none)
vbox = Widgets.VBox(spacing=8, padding=10)
vbox.add_widget(btn, 0) # stretch=0 means natural size
vbox.add_widget(label, 1) # stretch=1 means expand to fill
HBox¶
Horizontal box layout. Same interface as VBox.
Methods:
add_widget(child, stretch),set_spacing(gap)
GridBox¶
Grid layout.
Options:
rows,columnsMethods:
add_widget(child, row, col),set_spacing(px),set_row_spacing(px),set_column_spacing(px),get_row_column_count(),get_widget_at_cell(row, col),insert_row(index, widgets),append_row(widgets),delete_row(index),insert_column(index, widgets),append_column(widgets),delete_column(index)
Splitter¶
Resizable split pane.
Options:
orientationMethods:
add_widget(child),set_sizes(sizes),get_sizes(),set_minimum_size(child, min_px)Callbacks:
sizing
Frame¶
Titled frame (group box).
Options:
titleMethods:
set_widget(child),set_title(text)
Expander¶
Collapsible section.
Options:
title,collapsible,shadowMethods:
set_widget(child),toggleContent()
ScrollArea¶
Scrollable container.
Options:
hscrollbar,vscrollbarMethods:
set_widget(child)
TabWidget¶
Tabbed container.
Options:
closable,reorderable,tab_positionMethods:
add_widget(child, options),show_widget(child),close_widget(child),set_index(index),get_index(),get_tab_id(child),get_child(tab_id),index_of(child),highlight_tab(child, bgcolor),set_tab_position(tabpos)Callbacks:
page-switch,page-close
tabs = Widgets.TabWidget(closable=True, tab_position="top")
tabs.add_widget(panel1, {"title": "Tab 1"})
tabs.add_widget(panel2, {"title": "Tab 2"})
StackWidget¶
Stacked pages (like tabs without the tab bar).
Methods:
add_widget(child, options),show_widget(child),set_index(index),get_index()Callbacks:
page-switch
MDIWidget¶
Multiple-document interface container.
Methods:
add_widget(child, options),cascade_windows(),tile_windows(),get_subwin(child),close_child(child),set_resistance(value)Callbacks:
page-switch,page-close
Windows¶
TopLevel¶
A floating window (the primary container for an application).
Options:
resizable,title,moveable,closeableMethods:
set_widget(child),set_title(title),set_position(x, y),set_moveable(tf)Callbacks:
move,close
top = Widgets.TopLevel(title="My App", resizable=True)
top.resize(800, 600)
top.set_widget(vbox)
top.show()
Page¶
A page-level container (fills the browser viewport).
Methods:
set_widget(child)
Dialog¶
Modal or non-modal dialog with buttons.
Args:
title,buttonsOptions:
autoclose,resizable,moveable,modalMethods:
get_content_area()Callbacks:
activated– fires with the button label clicked.
dlg = Widgets.Dialog("Confirm", ["OK", "Cancel"], modal=True)
content = dlg.get_content_area()
# content is a widget you can add children to
dlg.on("activated", lambda btn_text: print(f"Clicked: {btn_text}"))
dlg.show()
ColorDialog¶
Color picker dialog.
Options:
color,title,modal,moveableMethods:
get_color(),set_color(hex_string)Callbacks:
activated,pick
Text¶
Label¶
Args:
textOptions:
halignMethods:
set_text(text),get_text(),set_color(bg, fg),set_halign(align)
TextEntry¶
Single-line text input.
Options:
text,editable,linehistory,passwordMethods:
set_text(text),get_text(),clear(),set_length(numchars)Callbacks:
activated– fires with the entered text.
entry = Widgets.TextEntry(text="Type here", linehistory=5)
entry.on("activated", lambda text: print(f"Entered: {text}"))
TextEntrySet¶
Text entry with a button.
Options:
text,value,editable,linehistoryMethods:
set_button_text(text),set_text(text),get_text(),clear(),set_length(numchars)Callbacks:
activated
TextArea¶
Multi-line text.
Args:
textOptions:
wrap,editableMethods:
set_text(text),get_text(),append_text(text),clear(),set_editable(tf),set_wrap(tf),set_limit(numlines)
TextSource¶
Source code editor with line numbers, syntax tags, and gutter icons.
Args:
textOptions:
wrap,line_numbers,icon_gutter,editable,font_family,font_sizeMethods:
set_text(text),get_text(),get_length(),insert_text(offset, text, tags),delete_range(start, end),clear(),set_editable(tf),set_wrap(mode),set_line_numbers(tf),set_icon_gutter(tf),set_icon(line, icon_url),get_cursor(),set_cursor(offset),get_selection(),set_selection(start, end),create_tag(name, attrs),remove_tag_def(name),apply_tag(name, start, end),remove_tag(name, start, end),get_tags_at(offset),create_ref(offset, gravity),remove_ref(ref),undo(),redo(),can_undo(),can_redo(),find(query, opts),find_all(query, opts),replace(query, replacement, opts),scroll_to(ref_or_offset),scroll_to_cursor()Callbacks:
changed,cursor_moved,line_clicked,icon_clicked
Selectors¶
ComboBox¶
Drop-down selector.
Options:
editable,dropdown_limitMethods:
append_text(text),insert_alpha(text),delete_alpha(text),set_text(text),get_text(),set_index(idx),get_index(),get_alpha(idx),clear(),set_length(numchars)Callbacks:
activated
SpinBox¶
Numeric spinner.
Options:
dtype,min,max,step,value,decimalsMethods:
set_value(val),get_value(),set_limits(minval, maxval, incrval),set_decimals(num)Callbacks:
activated
Slider¶
Options:
orientation,track,dtype,min,max,step,value,show_valueMethods:
set_value(num),get_value(),set_limits(minval, maxval, incrval),set_tracking(track)Callbacks:
activated
slider = Widgets.Slider(min=0, max=100, value=50, track=True)
slider.on("activated", lambda val: print(f"Value: {val}"))
Dial¶
Rotary dial control.
Options:
track,dtype,min,max,step,valueMethods:
set_value(num),get_value(),set_limits(minval, maxval, incrval),set_tracking(track),set_knob_diameter(len_px),set_icon(url, size)Callbacks:
activated
ScrollBar¶
Options:
orientation,thicknessMethods:
set_scroll_percent(pct),get_scroll_percent(),set_thumb_width(pct)Callbacks:
activated
ProgressBar¶
Methods:
set_value(value),get_value()
Color¶
ColorWidget¶
Inline color picker.
Options:
colorMethods:
get_color(),set_color(hex_string)Callbacks:
pick
Data Display¶
Image¶
Displays an image. Can be interactive for drawing and input events.
Options:
url,interactive,use_animation_frameMethods:
set_image(url),get_draw_context(),update()Callbacks:
pointer-down,pointer-up,pointer-move,enter,leave,click,dblclick,scroll,key-down,key-up,key-press,focus-in,focus-out,drop-start,drop-end,drag-over,drop-progress,contextmenu
Canvas¶
HTML5 canvas for custom drawing.
Options:
use_animation_frame,interactiveMethods:
draw_image(imgInfo),get_draw_context(),update()Callbacks: Same interactive callbacks as Image, plus
activated.
TreeView¶
Hierarchical tree/list display.
Options:
columns,show_header,selection_mode,alternate_row_colors,show_grid,show_row_numbersMethods:
set_columns(columns),set_tree(data),set_data(data),add_item(parent, values),remove_item(node),update_tree(items),remove_items(paths),clear(),expand_all(),collapse_all(),get_expanded(),get_collapsed(),expand_item(node),collapse_item(node),get_selected(),set_selected(items),select_path(path, state),select_paths(paths, state),select_all(state),set_column_width(col_index, width),set_optimal_column_widths(),sort_by_column(col_index, ascending),scroll_to_path(path),scroll_to_end(),get_column_count(),get_row_count(),set_show_grid(tf),set_show_row_numbers(tf),set_column_editable(col_index, tf),set_cell(row, col_index, value),insert_column(index, column),append_column(column),delete_column(index),insert_row(index, values),append_row(values),delete_row(index)Callbacks:
activated,selected,expanded,collapsed,cell_edited
TableView¶
Flat table display. Same column/selection interface as TreeView but without tree hierarchy.
Options:
columns,show_header,selection_mode,alternate_row_colors,show_grid,show_row_numbersMethods:
set_columns(columns),set_rows(rows),set_data(data),clear(),get_selected(),set_selected(items),select_path(path, state),select_paths(paths, state),select_all(state),set_column_width(col_index, width),set_optimal_column_widths(),sort_by_column(col_index, ascending),scroll_to_path(path),scroll_to_end(),get_column_count(),get_row_count(),set_show_grid(tf),set_show_row_numbers(tf),set_column_editable(col_index, tf),set_cell(row, col_index, value),insert_column(index, column),append_column(column),delete_column(index),insert_row(index, values),append_row(values),delete_row(index)Callbacks:
activated,selected,cell_edited
Non-Visual¶
Timer¶
Non-visual timer. Created via session.make_timer() or the widget factory.
Options:
durationMethods:
start(duration),stop(),cancel(),is_set(),elapsed_time(),time_left(),set_duration(duration),get_duration()Callbacks:
expired,cancelled
timer = session.make_timer(duration=5000) # 5 seconds
timer.on("expired", lambda: print("Timer fired!"))
timer.start()
FileDialog¶
Browser file open/save dialog.
Options:
mode,acceptMethods:
open(),save(filename, data, mime_type),set_mode(mode),get_mode(),set_accept(accept),get_accept()Callbacks:
activated,progress