Difference between revisions of "LuaAPI/types/widget"

From The Battle for Wesnoth Wiki
< LuaAPI‎ | types
(Widget callbacks: Update to bring in line with the new hooks guideline)
(Widget Callbacks: Sort subsections)
 
(26 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
<div class="tright"> __TOC__ </div>
 
<div class="tright"> __TOC__ </div>
  
The '''widget''' userdata offers access to a widget of a GUI2 dialog. While there is only one type of widget userdata that covers all widgets including the window itself, the properties of a widget userdata are different for each type of widget. Indexing a widget's userdata can either be used to access a child widget or to set or get a property of a widget. Some properties are read-only; the properties depend on the type of the widget.
+
The '''widget''' userdata offers access to a widget of a GUI2 dialog. While there is only one type of widget userdata that covers all widgets including the window itself, the properties of a widget userdata are different for each type of widget. Indexing a widget's userdata can either be used to access a child widget or to set or get a property of a widget. Some properties are read-only or write-only; the properties depend on the type of the widget.
  
 
An example of accessing a child widget:
 
An example of accessing a child widget:
Line 8: Line 8:
 
function preshow(dialog)
 
function preshow(dialog)
 
   local okay_button = dialog.okay_button
 
   local okay_button = dialog.okay_button
   -- okay_button is now a handle to the the widgets child with the id 'okay_button'  
+
   -- okay_button is now a handle to the the widget's child with the id 'okay_button'  
 
end
 
end
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 14: Line 14:
 
== Widget Attributes ==
 
== Widget Attributes ==
  
=== selected ===
+
=== best_slider_length ===
 +
* ''widget''.'''best_slider_length''' &harr; ''length''
 +
* Available on: '''[slider]'''
 +
Best length of the slider.
 +
 
 +
=== characters_per_line ===
 +
* ''widget''.'''label''' &harr; ''int''
 +
* Available on: '''[label]'''
 +
Maximum characters this label should show per line.
  
* ''widget''.'''selected''' &harr; ''boolean''
+
=== editable ===
* Available on: '''[toggle_button]''', '''[toggle_panel]'''
+
* ''widget''.'''enabled''' &harr; ''boolean''
 +
* Available on: '''[text_box]'''
 +
If this text box is editable, i.e., read-only. (Text can be selected/copied but not modified.)
  
Whether the item is selected or not. Note that this should only be used for widgets that have only 2 states. In particular, there exist 3-State toggle_buttons (for example in listbox headers). For those, selected_index must be used instead.
+
=== ellipsize_mode ===
 +
* ''widget''.'''ellipsize_mode''' &harr; ''ellipsization mode string''
 +
* Available on: Most widgets
 +
Sets the [https://docs.gtk.org/Pango/enum.EllipsizeMode.html Pango ellipsization mode] for the widget. Accepts only one of the special strings:
 +
{| clasS="wikitable"
 +
! String value
 +
|-
 +
| none
 +
|-
 +
| start
 +
|-
 +
| end
 +
|-
 +
| middle
 +
|-
 +
|}
  
=== selected_index ===
+
=== enabled ===
 +
* ''widget''.'''enabled''' &harr; ''boolean''
 +
* Available on: Most widgets
  
* ''widget''.'''selected_index''' &harr; ''index''
+
=== help ===
* Available on: '''[listbox]''', '''[multi_page]''', '''[stacked_widget]''', '''[menu_button]''', '''[toggle_button]''', '''[toggle_panel]'''
+
* ''widget''.'''enabled''' &harr; ''text''
 +
* Available on: Most widgets
 +
Help text for this widget.
  
The selected index of the item. For '''[toggle_button]''' and '''[toggle_panel]''', this is the same as '''selected''' only encoded as a number (1 for false or 2 for true) instead of a boolean.
+
=== hint_image ===
 +
* ''widget''.'''hint_image''' &harr; ''text''
 +
* Available on: '''[text_box]''', '''[combobox]'''
 +
A image that is shown on the widget when it is not focused and has no other text.
  
=== text ===
+
=== hint_text ===
 +
* ''widget''.'''hint_text''' &harr; ''text''
 +
* Available on: '''[text_box]''', '''[combobox]'''
 +
A background text that is shown on the widget when it is not focused and has no other text.
  
* ''widget''.'''text''' &harr; ''text''
+
=== history ===
 +
* ''widget''.'''history''' &larr; ''text''
 
* Available on: '''[text_box]'''
 
* Available on: '''[text_box]'''
 +
Input history of this text box.
 +
 +
=== indentation_step_size ===
 +
* ''widget''.'''indentation_step_size''' &harr; ''int''
 +
* Available on: '''[tree_view]'''
 +
How much should child nodes be offset from their parent node.
 +
 +
=== item_count ===
 +
* ''widget''.'''item_count''' &rarr; ''number of items''
 +
* Available on: '''[multi_page]''', '''[listbox]''',  '''[combobox]''',  '''[stacked_widget]''', '''[tree_view]''',  '''[tree_view_node]''', '''[styled_widget]'''
 +
The number of items in the container widget.
  
The text of the textbox.
+
=== label ===
 +
* ''widget''.'''label''' &larr; ''text''
 +
* Available on: Most widgets, in particular '''[label]''', '''[button]''', '''[image]'''
 +
The widget's label. Technically this is a special string used in the widget's wml definition. It usually does what one would expect, but also sets the image for '''image''' widgets.  For '''[text_box]''', use '''text''' for initial values.
 +
 
 +
=== link_aware ===
 +
* ''widget''.'''link_aware''' &rarr; ''boolean''
 +
* Available on: '''[label]''', '''[rich_label]''', '''[scroll_label]''', '''[scroll_text]'''
 +
Whether this widget recognizes inline links and allows clicking on them.
 +
 
 +
=== link_color ===
 +
* ''widget''.'''link_color''' &rarr; ''color string''
 +
* Available on: '''[label]''', '''[rich_label]'''
 +
Color of the inline link, as an hex string.
 +
 
 +
=== marked_up_text ===
 +
* ''widget''.'''marked_up_text''' &larr; ''text''
 +
* Available on: Most widgets, in particular '''[label]''', '''[button]'''
 +
Shortcut for setting label and use_markup=yes.
 +
 
 +
=== maximum_value_label ===
 +
* ''widget''.'''maximum_value_label''' &harr; ''text''
 +
* Available on: '''[slider]'''
 +
The text the slider's label shows when it is at maximum value position.
  
=== value ===
+
=== max_input_length ===
 +
* ''widget''.'''max_input_length''' &harr; ''text''
 +
* Available on: '''[text_box]''', '''[combobox]'''
 +
Maximum number of character than can be input into this widget.
  
* ''widget''.'''value''' &harr; ''position''
+
=== minimum_value_label ===
 +
* ''widget''.'''minimum_value_label''' &harr; ''text''
 
* Available on: '''[slider]'''
 
* Available on: '''[slider]'''
 +
The text the slider's label shows when it is at minimum value position.
  
The current position of the slider.
+
=== overflow_to_tooltip ===
 +
* ''widget''.'''overflow_to_tooltip''' &harr; ''boolean''
 +
* Available on: Most widgets
 +
 
 +
=== path ===
 +
* ''widget''.'''path''' &rarr; ''array of indices''
 +
* Available on: '''[tree_view_node]'''
 +
A table describing this node in the overall treeview. See [[#selected_item_path|selected_item_path]] for the meaning of the table..
  
 
=== percentage ===
 
=== percentage ===
 
 
* ''widget''.'''percentage''' &harr; ''position''
 
* ''widget''.'''percentage''' &harr; ''position''
 
* Available on: '''[progress_bar]'''
 
* Available on: '''[progress_bar]'''
 +
The current position of the progress bar, between 0 and 100.
  
The current position of the progress bar, between 0 and 100.
+
=== selected ===
 +
* ''widget''.'''selected''' &harr; ''boolean''
 +
* Available on: '''[toggle_button]''', '''[toggle_panel]'''
 +
Whether the item is selected or not. Note that this should only be used for widgets that have only 2 states. In particular, there exist 3-State toggle_buttons (for example in listbox headers). For those, selected_index must be used instead.
 +
 
 +
=== selected_index ===
 +
* ''widget''.'''selected_index''' &harr; ''index''
 +
* Available on: '''[listbox]''', '''[multi_page]''', '''[stacked_widget]''', '''[menu_button]''', '''[toggle_button]''', '''[toggle_panel]'''
 +
The selected index of the item. For '''[toggle_button]''' and '''[toggle_panel]''', this is the same as '''selected''' only encoded as a number (1 for false or 2 for true) instead of a boolean.
 +
For a  '''[listbox]'''with '''has_maximum=false''' and more than one item selected, reading '''selected_index''' will return the first selected index.
 +
For a '''[stacked_widget]''', only the layer specified by '''selected_index''' will be displayed and receive events (callbacks will only be triggered on the selected layer).
 +
A '''selected_index''' of 0 represents all layers being selected, with events only being received by the layer with the highest index.  Note that term ''selected'' for the ''layer'' of a stacked_widget is not the same as the '''selected''' ''widget'' attribute.
  
 
=== selected_item_path ===
 
=== selected_item_path ===
 
 
* ''widget''.'''selected_item_path''' &rarr; ''array of indices''
 
* ''widget''.'''selected_item_path''' &rarr; ''array of indices''
* Available on: '''[treeview]'''
+
* Available on: '''[tree_view]'''
 
 
 
A table describing the currently selected node. If for example, in the following treeview, Item 9 is selected, the result will be {2,1,3}.
 
A table describing the currently selected node. If for example, in the following treeview, Item 9 is selected, the result will be {2,1,3}.
 
 
  +Section1
 
  +Section1
 
   +Subsection11
 
   +Subsection11
Line 75: Line 165:
 
   *Item12
 
   *Item12
  
=== path ===
+
=== step_size ===
 +
* ''widget''.'''step_size''' &harr; ''int''
 +
* Available on: '''[slider]'''
 +
 
 +
=== text ===
 +
* ''widget''.'''text''' &harr; ''text''
 +
* Available on: '''[text_box]'''
 +
The text of the textbox.
 +
 
 +
=== text_alignment ===
 +
* ''widget''.'''text_alignment''' &harr; ''text alignment string''
 +
* Available on: Most widgets
 +
Sets the [https://docs.gtk.org/Pango/enum.Alignment.html Pango text alignment] for the widget. Accepts only one of the special strings:
 +
{| clasS="wikitable"
 +
! String value
 +
|-
 +
| left
 +
|-
 +
| right
 +
|-
 +
| center
 +
|-
 +
|}
  
* ''widget''.'''path''' &rarr; ''array of indices''
+
=== tooltip ===
* Available on: '''[tree_view_node]'''
+
* ''widget''.'''tooltip''' &harr; ''text''
 +
* Available on: Most widgets
  
A table describing this node in the overall treeview. See [[#selected_item_path|selected_item_path]] for the meaning of the table..
+
=== type ===
 +
* ''widget''.'''type''' &rarr; ''string''
 +
* Available on: All widgets
 +
Returns a string specifying the type of the widget.
  
 
=== unfolded ===
 
=== unfolded ===
 
 
* ''widget''.'''unfolded''' &larr; ''boolean''
 
* ''widget''.'''unfolded''' &larr; ''boolean''
* Available on: '''[tree_view_node]'''
+
* Available on: '''[tree_view_node]''', '''[tree_view]'''
 
 
 
Control whether a tree node is currently expanded or not.
 
Control whether a tree node is currently expanded or not.
  
 
=== unit ===
 
=== unit ===
 
 
* ''widget''.'''unit''' &larr; ''unit or unit type''
 
* ''widget''.'''unit''' &larr; ''unit or unit type''
 
* Available on: '''[unit_preview_pane]'''
 
* Available on: '''[unit_preview_pane]'''
 
 
Change the displayed unit or unit type in the preview pane.
 
Change the displayed unit or unit type in the preview pane.
 
=== item_count ===
 
 
* ''widget''.'''item_count''' &rarr; ''number of items''
 
* Available on: '''[multi_page]''', '''listbox'''
 
 
The number of items in the container widget.
 
  
 
=== use_markup ===
 
=== use_markup ===
 
 
* ''widget''.'''use_markup''' &rarr; ''boolean''
 
* ''widget''.'''use_markup''' &rarr; ''boolean''
 
* Available on: Most widgets, in particular '''[label]''', '''[button]'''
 
* Available on: Most widgets, in particular '''[label]''', '''[button]'''
 
 
Sets whether the widget's label will parse [[Pango formatting]].
 
Sets whether the widget's label will parse [[Pango formatting]].
  
=== label ===
+
=== value ===
 
+
* ''widget''.'''value''' &harr; ''position''
* ''widget''.'''label''' &larr; ''text''
+
* Available on: '''[slider]'''
* Available on: Most widgets, in particular '''[label]''', '''[button]''', '''[image]'''
+
The current position of the slider.
 
 
The widget's label. Technically this is a special string used in the widget's wml definition. It usually does what one would expect, but also sets the image for '''image''' widgets.
 
 
 
=== marked_up_text ===
 
 
 
* ''widget''.'''marked_up_text''' &larr; ''text''
 
* Available on: Most widgets, in particular '''[label]''', '''[button]'''
 
 
 
Shortcut for setting label and use_markup=yes.
 
 
 
=== enabled ===
 
 
 
* ''widget''.'''enabled''' &larr; ''boolean''
 
* Available on: All widgets
 
 
 
=== tooltip ===
 
 
 
* ''widget''.'''tooltip''' &larr; ''text''
 
* Available on: All widgets
 
  
 
=== visible ===
 
=== visible ===
 
+
* ''widget''.'''visible''' &harr; ''visibility string''
* ''widget''.'''visible''' &larr; ''visibility string''
+
* Available on: Most widgets
* Available on: All widgets
 
 
 
 
Determines whether the widget is visible onscreen. The following visibility statuses are recognized:
 
Determines whether the widget is visible onscreen. The following visibility statuses are recognized:
 
{| clasS="wikitable"
 
{| clasS="wikitable"
Line 150: Line 232:
 
|}
 
|}
  
=== type ===
+
=== wrap ===
 +
* ''widget''.'''wrap''' &rarr; ''boolean''
 +
* Available on: '''[label]'''
 +
Whether the text content in this label can wrap.
 +
 
 +
== Widget Callbacks ==
 +
 
 +
=== on_button_click ===
 +
 
 +
* ''widget''.'''on_button_click''' &larr; '''function'''()
 +
* Available on: '''[button]''', '''[repeating_button]'''
 +
 
 +
Triggers when the user clicks on the button. This can differ from '''on_left_click''', depending on the type of widget. For example, on a '''[repeating_button]''' it will fire multiple times if the user holds the mouse button down.
 +
 
 +
=== on_double_click ===
 +
{{DevFeature1.19|14}}
 +
 
 +
* ''widget''.'''on_double_click''' &larr; '''function'''()
 +
* Available on: '''[toggle_panel]'''
 +
 
 +
Triggers when the user double clicks on the widget. Non-toggle panel widgets can be wrapped in a toggle panel to make use of this event handler.
 +
 
 +
=== on_left_click ===
  
* ''widget''.'''type''' &rarr; ''string''
+
* ''widget''.'''on_left_click''' &larr; '''function'''()
 
* Available on: All widgets
 
* Available on: All widgets
  
Returns a string specifying the type of the widget.
+
Triggers when the user clicks on the widget.
 +
 
 +
=== on_link_click ===
 +
{{DevFeature1.19|9}}
 +
 
 +
* ''widget''.'''on_link_click''' &larr; '''function'''(''dest'')
 +
* Available on: '''[rich_label]'''
  
== Widget callbacks ==
+
Triggers when the user clicks on a '''<ref>''' link inside a '''[rich_label]'''. The first argument '''dest''' is the target of the link.
  
 
=== on_modified ===
 
=== on_modified ===
Line 166: Line 276:
 
Triggers when the user changes the value of the widget.
 
Triggers when the user changes the value of the widget.
  
=== on_left_click ===
+
== Widget Length ==
  
* ''widget''.'''on_left_click''' &larr; '''function'''()
+
{{DevFeature1.19|4}}
* Available on: All widgets
 
  
Triggers when the user clicks on the widget.
+
* '''#'''''widget''
 +
* Available on: '''[listbox]''', '''[multi_page]''', '''[tree_view]''', '''[tree_view_node]''', {{DevFeature1.19|6}} '''[stacked_widget]'''
  
=== on_button_click ===
+
Returns the total number of children in the specified container widget – for example, the number of rows in a list box, or the number of pages in a multi-page.
  
* ''widget''.'''on_button_click''' &larr; '''function'''()
+
== Widget Methods ==
* Available on: '''[button]''', '''[repeating_button]'''
 
 
 
Triggers when the user clicks on the button. This can differ from '''on_left_click''', depending on the type of widget. For example, on a '''[repeating_button]''' it will fire multiple times if the user holds the mouse button down.
 
  
== Widget methods ==
+
Any function defined in the [[LuaAPI/gui/widget|gui.widget]] module and taking a widget as its first parameter can be called as a method of a widget. This includes any functions that are added to the module by user code. Note that these methods are available even if the widget itself doesn't support that function, so in some cases it may be necessary to check '''widget.type''' before calling the method.
  
Any function defined in the [[LuaAPI/gui/widget|gui.widget]] module and taking a widget as its first parameter can be called as a method of a widget. This includes any functions that are added to the module by user code. Note that these methods are available even if the widget itself doesn't support that function, so in some cases it may be necessary to check '''widget.type''' befor calling the method.
+
[[Category:Lua Reference]]

Latest revision as of 15:19, 16 February 2026

The widget userdata offers access to a widget of a GUI2 dialog. While there is only one type of widget userdata that covers all widgets including the window itself, the properties of a widget userdata are different for each type of widget. Indexing a widget's userdata can either be used to access a child widget or to set or get a property of a widget. Some properties are read-only or write-only; the properties depend on the type of the widget.

An example of accessing a child widget:

function preshow(dialog)
  local okay_button = dialog.okay_button
  -- okay_button is now a handle to the the widget's child with the id 'okay_button' 
end

Widget Attributes

best_slider_length

  • widget.best_slider_lengthlength
  • Available on: [slider]

Best length of the slider.

characters_per_line

  • widget.labelint
  • Available on: [label]

Maximum characters this label should show per line.

editable

  • widget.enabledboolean
  • Available on: [text_box]

If this text box is editable, i.e., read-only. (Text can be selected/copied but not modified.)

ellipsize_mode

  • widget.ellipsize_modeellipsization mode string
  • Available on: Most widgets

Sets the Pango ellipsization mode for the widget. Accepts only one of the special strings:

String value
none
start
end
middle

enabled

  • widget.enabledboolean
  • Available on: Most widgets

help

  • widget.enabledtext
  • Available on: Most widgets

Help text for this widget.

hint_image

  • widget.hint_imagetext
  • Available on: [text_box], [combobox]

A image that is shown on the widget when it is not focused and has no other text.

hint_text

  • widget.hint_texttext
  • Available on: [text_box], [combobox]

A background text that is shown on the widget when it is not focused and has no other text.

history

  • widget.historytext
  • Available on: [text_box]

Input history of this text box.

indentation_step_size

  • widget.indentation_step_sizeint
  • Available on: [tree_view]

How much should child nodes be offset from their parent node.

item_count

  • widget.item_countnumber of items
  • Available on: [multi_page], [listbox], [combobox], [stacked_widget], [tree_view], [tree_view_node], [styled_widget]

The number of items in the container widget.

label

  • widget.labeltext
  • Available on: Most widgets, in particular [label], [button], [image]

The widget's label. Technically this is a special string used in the widget's wml definition. It usually does what one would expect, but also sets the image for image widgets. For [text_box], use text for initial values.

link_aware

  • widget.link_awareboolean
  • Available on: [label], [rich_label], [scroll_label], [scroll_text]

Whether this widget recognizes inline links and allows clicking on them.

link_color

  • widget.link_colorcolor string
  • Available on: [label], [rich_label]

Color of the inline link, as an hex string.

marked_up_text

  • widget.marked_up_texttext
  • Available on: Most widgets, in particular [label], [button]

Shortcut for setting label and use_markup=yes.

maximum_value_label

  • widget.maximum_value_labeltext
  • Available on: [slider]

The text the slider's label shows when it is at maximum value position.

max_input_length

  • widget.max_input_lengthtext
  • Available on: [text_box], [combobox]

Maximum number of character than can be input into this widget.

minimum_value_label

  • widget.minimum_value_labeltext
  • Available on: [slider]

The text the slider's label shows when it is at minimum value position.

overflow_to_tooltip

  • widget.overflow_to_tooltipboolean
  • Available on: Most widgets

path

  • widget.patharray of indices
  • Available on: [tree_view_node]

A table describing this node in the overall treeview. See selected_item_path for the meaning of the table..

percentage

  • widget.percentageposition
  • Available on: [progress_bar]

The current position of the progress bar, between 0 and 100.

selected

  • widget.selectedboolean
  • Available on: [toggle_button], [toggle_panel]

Whether the item is selected or not. Note that this should only be used for widgets that have only 2 states. In particular, there exist 3-State toggle_buttons (for example in listbox headers). For those, selected_index must be used instead.

selected_index

  • widget.selected_indexindex
  • Available on: [listbox], [multi_page], [stacked_widget], [menu_button], [toggle_button], [toggle_panel]

The selected index of the item. For [toggle_button] and [toggle_panel], this is the same as selected only encoded as a number (1 for false or 2 for true) instead of a boolean. For a [listbox]with has_maximum=false and more than one item selected, reading selected_index will return the first selected index. For a [stacked_widget], only the layer specified by selected_index will be displayed and receive events (callbacks will only be triggered on the selected layer). A selected_index of 0 represents all layers being selected, with events only being received by the layer with the highest index. Note that term selected for the layer of a stacked_widget is not the same as the selected widget attribute.

selected_item_path

  • widget.selected_item_patharray of indices
  • Available on: [tree_view]

A table describing the currently selected node. If for example, in the following treeview, Item 9 is selected, the result will be {2,1,3}.

+Section1
 +Subsection11
  *Item1
  *Item2
  *Item3
 +Subsection12
  *Item4
  *Item5
  *Item6
+Section2
 +Subsection21
  *Item7
  *Item8
  *Item9
 +Subsection22
  *Item10
  *Item11
  *Item12

step_size

  • widget.step_sizeint
  • Available on: [slider]

text

  • widget.texttext
  • Available on: [text_box]

The text of the textbox.

text_alignment

  • widget.text_alignmenttext alignment string
  • Available on: Most widgets

Sets the Pango text alignment for the widget. Accepts only one of the special strings:

String value
left
right
center

tooltip

  • widget.tooltiptext
  • Available on: Most widgets

type

  • widget.typestring
  • Available on: All widgets

Returns a string specifying the type of the widget.

unfolded

  • widget.unfoldedboolean
  • Available on: [tree_view_node], [tree_view]

Control whether a tree node is currently expanded or not.

unit

  • widget.unitunit or unit type
  • Available on: [unit_preview_pane]

Change the displayed unit or unit type in the preview pane.

use_markup

  • widget.use_markupboolean
  • Available on: Most widgets, in particular [label], [button]

Sets whether the widget's label will parse Pango formatting.

value

  • widget.valueposition
  • Available on: [slider]

The current position of the slider.

visible

  • widget.visiblevisibility string
  • Available on: Most widgets

Determines whether the widget is visible onscreen. The following visibility statuses are recognized:

String value Boolean shorthand Meaning
visible true The widget is visible and handles events.
hidden The widget is not visible, doesn't handle events, but still takes up space on the dialog grid.
invisible false The widget is not visible, doesn't handle events, and does not take up space on the dialog grid.

wrap

  • widget.wrapboolean
  • Available on: [label]

Whether the text content in this label can wrap.

Widget Callbacks

on_button_click

  • widget.on_button_clickfunction()
  • Available on: [button], [repeating_button]

Triggers when the user clicks on the button. This can differ from on_left_click, depending on the type of widget. For example, on a [repeating_button] it will fire multiple times if the user holds the mouse button down.

on_double_click

(Version 1.19.14 and later only)

  • widget.on_double_clickfunction()
  • Available on: [toggle_panel]

Triggers when the user double clicks on the widget. Non-toggle panel widgets can be wrapped in a toggle panel to make use of this event handler.

on_left_click

  • widget.on_left_clickfunction()
  • Available on: All widgets

Triggers when the user clicks on the widget.

on_link_click

(Version 1.19.9 and later only)

  • widget.on_link_clickfunction(dest)
  • Available on: [rich_label]

Triggers when the user clicks on a <ref> link inside a [rich_label]. The first argument dest is the target of the link.

on_modified

  • widget.on_modifiedfunction()
  • Available on: Most widgets, in particular [slider], [toggle_button], [listbox], [menu_button], [text_box]

Triggers when the user changes the value of the widget.

Widget Length

(Version 1.19.4 and later only)

Returns the total number of children in the specified container widget – for example, the number of rows in a list box, or the number of pages in a multi-page.

Widget Methods

Any function defined in the gui.widget module and taking a widget as its first parameter can be called as a method of a widget. This includes any functions that are added to the module by user code. Note that these methods are available even if the widget itself doesn't support that function, so in some cases it may be necessary to check widget.type before calling the method.

This page was last edited on 16 February 2026, at 15:19.