Table

class pygame_menu.widgets.Table(table_id='')[source]

Bases: pygame_menu.widgets.widget.frame.Frame

Table is a frame which can pack widgets in a structured way.

Note

Table cannot be selected. Thus, it does not receive any selection effect.

Note

Table only accepts translation and resize transformations.

Parameters

table_id (str) – ID of the table

add_draw_callback(draw_callback)

Adds a function to the Widget to be executed each time the widget is drawn.

The function that this method receives receives two objects: the Widget itself and the Menu reference.

import math

def draw_update_function(widget, menu):
    t = widget.get_attribute('t', 0)
    t += menu.get_clock().get_time()
    widget.set_padding(10*(1 + math.sin(t))) # Oscillating padding

button = menu.add.button('This button updates its padding', None)
button.set_draw_callback(draw_update_function)

After creating a new callback, this functions returns the ID of the call. It can be removed anytime using pygame_menu.widgets.core.widget.Widget.remove_draw_callback().

Note

If Menu surface cache is enabled this method may run only once. To force running the added method each time call widget.force_menu_surface_update() to force Menu update the cache status if the drawing callback does not make the Widget to render. Remember that rendering the Widget forces the Menu to update its surface, thus updating the cache too.

Parameters

draw_callback (Callable[[Widget, Menu], Any]) – Function

Return type

str

Returns

Callback ID

add_row(cells, cell_align=None, cell_border_color=None, cell_border_position=None, cell_border_width=None, cell_font=None, cell_font_color=None, cell_font_size=None, cell_padding=None, cell_vertical_position=None, row_background_color=None)[source]

Add row to table.

Note

By default, if None each cell style uses the table defaults “cell” styles.

Note

By default, the cell font is the same as the table font style.

Warning

Currently, only static widgets work properly, that is, widgets that does not accept events. Buttons or TextInputs can be added, but them will not accept any event, also, these widgets cannot be selected. That’s because the Table architecture relies on Frame widget.

Parameters
Return type

Frame

Returns

add_self_to_kwargs(key='widget')

Adds the Widget object to kwargs, it helps to get the Widget reference for callbacks. It raises KeyError if key is duplicated.

Parameters

key (str) – Name of the parameter

Return type

Widget

Returns

Self reference

add_update_callback(update_callback)

Adds a function to the Widget to be executed each time the Widget is updated.

The function that this method receives receives three objects: the events list, the Widget itself and the Menu reference. It is similar to pygame_menu.widgets.core.widget.Widget.add_draw_callback().

After creating a new callback, this functions returns the ID of the call. It can be removed anytime using pygame_menu.widgets.core.widget.Widget.remove_update_callback().

Note

Not all widgets are updated, so the provided function may never be executed in some widgets (for example, label or images).

Parameters

update_callback (Callable[[List[Event], Widget, Menu], Any]) – Function

Return type

str

Returns

Callback ID

apply_draw_callbacks()

Apply callbacks on Widget draw.

Return type

Widget

Returns

Self reference

apply_update_callbacks(events)

Apply callbacks on Widget update.

Note

Readonly widgets or hidden widgets do not apply update callbacks.

Parameters

events (List[Event]) – Events list

Return type

Widget

Returns

Self reference

clear()

Unpack all widgets within frame.

Return type

Union[Widget, Tuple[Widget, ...]]

Returns

Removed widgets

draw(surface)[source]

Draw the Widget on a given surface.

Note

Widget drawing order:

  1. Background color

  2. prev decorator

  3. Widget selection effect (if prev)

  4. Widget surface

  5. Widget selection effect (if post)

  6. Widget border

  7. post decorator

Parameters

surface (Surface) – Surface to draw

Return type

Table

Returns

Self reference

force_menu_surface_cache_update()

Forces menu surface cache to update after next drawing call. This also updates widget decoration.

Note

This method only updates the surface cache, without forcing re-rendering of all Menu widgets as pygame_menu.widgets.core.widget.Widget.force_menu_surface_update() does.

Return type

Widget

Returns

Self reference

force_menu_surface_update()

Forces menu surface update after next rendering call. This method automatically updates widget decoration cache as Menu render forces it to re-render.

This method also should be aclled by each widget after render.

Note

This method is expensive, as menu surface update forces re-rendering of all widgets (because them can change in size, position, etc…).

Return type

Widget

Returns

Self reference

get_alignment()

Return the Widget alignment.

Return type

str

Returns

Widget align

get_attribute(key, default=None)

Get an attribute value.

Parameters
  • key (str) – Key of the attribute

  • default (Optional[Any]) – Value if it does not exist

Return type

Any

Returns

Attribute data

get_border()

Return the widget border properties.

Return type

Tuple[Union[Tuple[int, int, int], Tuple[int, int, int, int]], int, Union[str, List[str], Tuple[str, ...]], Tuple[int, int]]

Returns

Color, width, position, and inflate

get_cell(column, row)[source]

Get cell widget at column/row position.

Parameters
  • column (int) – Cell column position (counting from 1)

  • row (int) – Cell row position (counting from 1)

Return type

Widget

Returns

Cell widget object

static get_cell_column_row(cell)[source]

Return the column/row within table layout for the given widget.

Parameters

cell (Widget) – Widget (cell) to get the column/row position

Return type

Tuple[int, int]

Returns

Column/Row

get_class_id()

Return the Class+ID as a string.

Return type

str

Returns

Class+ID format

get_col_row_index()

Get the Widget column/row position.

Return type

Tuple[int, int, int]

Returns

(column, row, index) tuple

get_counter_attribute(key, incr=0, default=0)

Get counter attribute.

Parameters
  • key (str) – Key of the attribute

  • incr (Any) – Increase value

  • default (Any) – Default vale to start with, by default it’s zero

Return type

Union[int, float]

Returns

New increase value

get_decorator()

Frame decorator belongs to the scrollarea decorator if enabled.

Return type

Decorator

Returns

ScrollArea decorator

get_focus_rect()

Return rect to be used in Widget focus.

Return type

Rect

Returns

Focus rect

get_font_color_status(check_selection=True)

Return the Widget font color based on the widget status.

Parameters

check_selection (bool) – If True font is also checked if selected

Return type

Union[Tuple[int, int, int], Tuple[int, int, int, int]]

Returns

Color by widget status

get_font_info()

Return a dict with the information of the Widget font.

Return type

Dict[str, Any]

Returns

Font information dict

get_frame()

Get container frame of Widget. If Widget is not within a Frame, the method returns None.

Returns

Frame object

Return type

pygame_menu.widgets.Frame

get_frame_depth()

Get frame depth (If frame is packed within another frame).

Return type

int

Returns

Frame depth

get_height(apply_padding=True, apply_selection=False)

Return the Widget height.

Warning

If the widget is not rendered, this method will return 0.

Parameters
  • apply_padding (bool) – Apply padding

  • apply_selection (bool) – Apply selection

Return type

int

Returns

Widget height in px

get_id()

Return the object ID.

Return type

str

Returns

Object ID

get_inner_size()

Return Frame inner size (width, height).

Return type

Tuple[int, int]

Returns

Size tuple in px

get_margin()

Return the Widget margin.

Return type

Tuple[int, int]

Returns

Widget margin (left, bottom)

get_max_size()

Return the max size of the frame.

Return type

Tuple[int, int]

Returns

Max (width, height) in px

get_menu()

Return the Menu reference, None if it has not been set.

Return type

Optional[Menu]

Returns

Menu reference

get_padding(transformed=True)

Return the Widget padding.

Parameters

transformed (bool) – If True, returns the scaled padding if widget is transformed (flip, scale)

Return type

Tuple

Returns

Widget padding (top, right, bottom, left)

get_position(apply_padding=False, use_transformed_padding=True, to_real_position=False, to_absolute_position=False, real_position_visible=True)

Return the widget position tuple on x-axis and y-axis (x, y) in px.

Parameters
  • apply_padding (bool) – Apply widget padding to position

  • use_transformed_padding (bool) – Use scaled padding if the widget is scaled

  • to_real_position (bool) – Get the real position within window (not the surface container)

  • to_absolute_position (bool) – Get the absolute position within surface container, considering also the parent scrollarea positioning

  • real_position_visible (bool) – Return only the visible width/height if to_real_position=True

Return type

Tuple[int, int]

Returns

Widget position

get_rect(inflate=None, apply_padding=True, use_transformed_padding=True, to_real_position=False, to_absolute_position=False, render=False, real_position_visible=True)

Return the pygame.Rect object of the Widget. This method forces rendering.

Parameters
  • inflate (Optional[Tuple[int, int]]) – Inflate rect on x-axis and y-axis (x, y) in px

  • apply_padding (bool) – Apply widget padding

  • use_transformed_padding (bool) – Use scaled padding if the widget is scaled

  • to_real_position (bool) – Transform the widget rect to real coordinates (if the Widget change the position if scrollbars move offsets). Used by events

  • to_absolute_position (bool) – Transform the widget rect to absolute coordinates (if the Widget does not change the position if scrollbars move offsets). Used by events

  • render (bool) – Force widget rendering

  • real_position_visible (bool) – Return only the visible width/height if to_real_position=True

Return type

Rect

Returns

Widget rect object

get_scrollarea(inner=False)

Return the scrollarea object.

Parameters

inner (bool) – If True return the inner scrollarea

Return type

Optional[ScrollArea]

Returns

ScrollArea object

get_size(apply_padding=True, apply_selection=False)

Return the Widget size.

Warning

If the widget is not rendered this method might return (0, 0).

Parameters
  • apply_padding (bool) – Apply padding

  • apply_selection (bool) – Apply selection

Return type

Tuple[int, int]

Returns

Widget width and height in px

get_surface()

Return the Widget surface.

Warning

Use with caution.

Return type

Surface

Returns

Widget surface object

get_total_packed()

Return the total number of packed widgets.

Return type

int

Returns

Number of packed widgets

get_translate(virtual=False)

Get Widget translation on x-axis and y-axis (x, y) in px.

Parameters

virtual (bool) – If True get virtual translation, usually applied within frame scrollarea

Return type

Tuple[int, int]

Returns

Translation on both axis

get_widgets(unpack_subframes=True, unpack_subframes_include_frame=False, reverse=False)

Get widgets as a tuple.

Parameters
  • unpack_subframes (bool) – If True add frame widgets instead of frame

  • unpack_subframes_include_frame (bool) – If True the unpacked frame is also added to the widget list

  • reverse (bool) – Reverse the returned tuple

Return type

Tuple[Widget, ...]

Returns

Widget tuple

get_width(apply_padding=True, apply_selection=False)

Return the Widget width.

Warning

If the Widget is not rendered, this method will return 0.

Parameters
  • apply_padding (bool) – Apply padding

  • apply_selection (bool) – Apply selection

Return type

int

Returns

Widget width in px

has_attribute(key)

Return True if the object has the given attribute.

Parameters

key (str) – Key of the attribute

Return type

bool

Returns

True if exists

hide()

Hides the Widget.

Return type

Frame

Returns

Self reference

is_floating()

Return True if the Widget is floating.

Return type

bool

Returns

Float status

is_rectangular()[source]

Return True if the table is rectangular, that is, each row have the same number of columns.

Return type

bool

Returns

Bool

is_visible(check_frame=True)

Return True if the Widget is visible.

Parameters

check_frame (bool) – If True check frame and sub-frames if they’re opened as well

Return type

bool

Returns

Visible status

mouseleave(event, check_all_widget_mouseleave=True)

Run the onmouseleave callback if the mouse is placed outside the Widget. The callback receive the Widget object reference and the mouse event:

onmouseleave(widget, event) <or> onmouseleave()

Warning

This method does not evaluate if the mouse is placed over the Widget. Only executes the callback and updates the cursor if enabled.

Parameters
  • event (Event) – MOUSEMOVE pygame event

  • check_all_widget_mouseleave (bool) – Check widget leave statutes

Return type

Widget

Returns

Self reference

mouseover(event, check_all_widget_mouseleave=True)

Run the onmouseover if the mouse is placed over the Widget. The callback receive the Widget object reference and the mouse event:

onmouseover(widget, event) <or> onmouseover()

Warning

This method does not evaluate if the mouse is placed over the Widget. Only executes the callback and updates the cursor if enabled.

Parameters
  • event (Event) – MOUSEMOVE pygame event

  • check_all_widget_mouseleave (bool) – Check widget leave statutes

Return type

Widget

Returns

Self reference

on_remove_from_menu()[source]

Function executed if the Widget is removed from the Menu.

Return type

Frame

Returns

Self reference

relax(relax=True)

Set relax status. If True Frame ignores sizing checks.

Parameters

relax (bool) – Relax status

Return type

Frame

Returns

Self reference

remove_attribute(key)

Removes the given attribute from the object. Throws IndexError if the given key does not exist.

Parameters

key (str) – Key of the attribute

Return type

Base

Returns

Self reference

remove_draw_callback(callback_id)

Removes draw callback from ID.

Parameters

callback_id (str) – Callback ID

Return type

Widget

Returns

Self reference

remove_row(row)[source]

Removes row from the table.

Parameters

row (Frame) – Row frame

Return type

None

remove_update_callback(callback_id)

Removes update callback from ID.

Parameters

callback_id (str) – Callback ID

Return type

Widget

Returns

Self reference

render()

Public rendering method.

Note

Unlike private _render method, public method forces widget rendering (calling pygame_menu.widgets.core.widget.Widget._force_render()). Use this method only if the widget has changed the state. Running this function many times may affect the performance.

Note

Before rendering, check out if the widget font/title/values are set. If not, it is probable that a zero-size surface is set.

Return type

Optional[bool]

Returns

True if widget has rendered a new state, None if the widget has not changed, so render used a cache

resize(width, height, max_width=None, max_height=None)

Resize the Frame.

Parameters
  • width (Union[int, float]) – New width in px. Horizontal padding will be subtracted

  • height (Union[int, float]) – New height in px. Vertical padding will be subtracted

  • max_width (Union[int, float, None]) – Max frame width if the Frame is scrollable. If None the same width will be used

  • max_height (Union[int, float, None]) – Max frame height if the Frame is scrollable. If None the same height will be used

Return type

Frame

Returns

Self reference

scroll_to_widget(margin=(0, 0), scroll_parent=True)

The container ScrollArea scrolls to the Widget.

Parameters
  • margin (Tuple[Union[int, float], Union[int, float]]) – Extra margin around the rect in px on x-axis and y-axis

  • scroll_parent (bool) – If True parent scroll also scrolls to widget

Return type

Widget

Returns

Self reference

set_alignment(align)

Set the alignment of the Widget.

Note

Alignment is only applied when updating the widget position, done by Menu when rendering the surface. Thus, the alignment change is not immediate.

Note

Use pygame_menu.widgets.core.widget.Widget.render() method to force widget rendering after calling this method.

Note

See pygame_menu.locals for valid align values.

Parameters

align (str) – Widget align

Return type

Widget

Returns

Self reference

set_attribute(key, value=None)

Set an attribute.

Parameters
  • key (str) – Key of the attribute

  • value (Optional[Any]) – Value of the attribute

Return type

Base

Returns

Self reference

set_background_color(color, inflate=(0, 0))

Set the Widget background color.

Parameters
Return type

Widget

Returns

Self reference

set_border(width, color, inflate=(0, 0), position=('position-north', 'position-south', 'position-east', 'position-west'))

Set the Widget border.

Note

Inflate is added to the background inflate in drawing time.

Parameters
Return type

Widget

Returns

Self reference

set_col_row_index(col, row, index)

Set the (column, row, index) position. If the column or row is -1 then the widget is not assigned to a certain column/row (for example, if it’s hidden).

Parameters
  • col (int) – Column

  • row (int) – Row

  • index (int) – Index in Menu widget list

Return type

Widget

Returns

Self reference

set_controls(joystick=True, mouse=True, touchscreen=True, keyboard=True)

Enable interfaces to control the Widget.

Parameters
  • joystick (bool) – Use joystick events

  • mouse (bool) – Use mouse events

  • touchscreen (bool) – Use touchscreen events

  • keyboard (bool) – Use keyboard events

Return type

Widget

Returns

Self reference

set_cursor(cursor)

Set the Widget cursor if user places the mouse over the Widget.

Parameters

cursor (Union[int, Cursor, None]) – Pygame cursor

Return type

Widget

Returns

Self reference

set_float(float_status=True, menu_render=False, origin_position=False)

Set the floating status. If True the Widget don’t contribute its width/height to the Menu widget positioning computation (for example, the surface area or the column/row layout), and don’t add one unit to the rows (use the same vertical place as the previous widget).

For example, before floating:

----------------------------
|    wid1    |    wid3     |
|    wid2    |    wid4     |
----------------------------

After wid3.set_float(True):

----------------------------
|    wid1    |    wid4     |
| wid2,wid3  |             |
----------------------------

If the Widget is within a Frame, it does not contribute to the width/height of the layout. Also, it is being set to the (0, 0) position, thus, the only way to move the Widget to a desired position is by translating it.

Parameters
  • float_status (bool) – Float status

  • menu_render (bool) – If True forces the Menu to render instantly; else, rendering is controlled by menu

  • origin_position (bool) – If True the widget position is set to the top-left position of the Menu if the widget is floating (updated by the Menu render phase)

Return type

Widget

set_font(font, font_size, color, selected_color, readonly_color, readonly_selected_color, background_color, antialias=True)

Set the Widget font.

Parameters
Return type

Widget

Returns

Self reference

set_font_shadow(enabled=True, color=None, position=None, offset=2)

Set the Widget font shadow.

Note

See pygame_menu.locals for valid position values.

Parameters
Return type

Widget

Returns

Self reference

set_frame(frame)

Set Widget frame.

Parameters

frame (Frame) – Frame object

Return type

Frame

Returns

Self reference

set_margin(x, y)

Set the Widget margin (left, bottom).

Parameters
Return type

Widget

Returns

Self reference

set_menu(menu)

Set the Widget menu reference.

Parameters

menu (Optional[Menu]) – Menu object

Return type

Frame

Returns

Self reference

set_onmouseleave(onmouseleave)

Set onmouseleave callback. This method is executed in pygame_menu.widgets.core.widget.Widget.mouseleave() method. The callback function receives the following arguments:

onmouseleave(widget, event) <or> onmouseleave()
Parameters

onmouseleave (Union[Callable[[Widget, Event], Any], Callable[[], Any], None]) – Callback executed if user leaves the Widget with the mouse; it can be a function or None

Return type

Widget

Returns

Self reference

set_onmouseover(onmouseover)

Set onmouseover callback. This method is executed in pygame_menu.widgets.core.widget.Widget.mouseover() method. The callback function receives the following arguments:

onmouseover(widget, event) <or> onmouseover()
Parameters

onmouseover (Union[Callable[[Widget, Event], Any], Callable[[], Any], None]) – Callback executed if user enters the Widget with the mouse; it can be a function or None

Return type

Widget

Returns

Self reference

set_padding(padding)

Set the Widget padding according to CSS rules:

  • If an integer or float is provided: top, right, bottom and left values will be the same

  • If 2-item tuple is provided: top and bottom takes the first value, left and right the second

  • If 3-item tuple is provided: top will take the first value, left and right the second, and bottom the third

  • If 4-item tuple is provided: padding will be (top, right, bottom, left)

Note

See CSS W3Schools for more info about padding.

Parameters

padding (Union[int, float, List[Union[int, float]], Tuple[Union[int, float]], Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float], Union[int, float]], None]) – Can be a single number, or a tuple of 2, 3 or 4 elements following CSS style

Return type

Widget

Returns

Self reference

set_position(x, y)[source]

Set the Widget position relative to the Menu/Frame.

This method is executed by the Menu when updating the widget positioning. For moving the widget use translate method instead, as this position will be rewritten on next menu rendering phase.

Note

Use pygame_menu.widgets.core.widget.Widget.render() method to force Widget rendering after calling this method.

Parameters
Return type

Table

Returns

Self reference

set_scrollarea(scrollarea)[source]

Set scrollarea reference. Mostly used for events.

Parameters

scrollarea (Optional[ScrollArea]) – Scrollarea object

Return type

None

shadow(shadow_type='rectangular', shadow_width=10, corner_radius=0, color=(0, 0, 0), aa_amount=4)

Configure the widget shadow.

Parameters
  • shadow_type (str) – Shadow type, it can be rectangular or ellipse

  • shadow_width (int) – Shadow width in px. If 0 the shadow is disabled

  • corner_radius (int) – Shadow corner radius if rectangular in px

  • color (Union[Tuple[int, int, int], Tuple[int, int, int, int], str, int, Color]) – Shadow color

  • aa_amount (int) – Antialiasing amout

Return type

Widget

Returns

Self reference

show()

Set the Widget visible.

Return type

Frame

Returns

Self reference

translate(x, y)

Transformation: Translate to (+x, +y) according to the default position.

Note

Translate is only applied when updating the widget position (calling pygame_menu.widgets.core.widget.Widget.set_position()). This is done by Menu when rendering the surface. Thus, the position change is not immediate. To force translation update you may call Menu render method.

Note

To revert changes, only set to (0, 0).

Note

Use pygame_menu.widgets.core.widget.Widget.render() method to force widget rendering after calling this method.

Parameters
Return type

Widget

unfloat()

Disable float status for each subwidget.

Return type

Frame

Returns

Self reference

update(events)[source]

Update according to the given events list and fire the callbacks. This method must return True if it updated (the internal variables changed during user input).

Note

Update is not performed if the Widget is in readonly state, or it’s hidden. However, apply_update_callbacks method is called in most widgets, except pygame_menu.widgets.NoneWidget.

Parameters

events (Union[List[Event], Tuple[Event]]) – List/Tuple of pygame events

Return type

bool

Returns

True if updated

update_cell_style(column, row, align=None, background_color=None, border_color=None, border_position=None, border_width=None, font=None, font_color=None, font_size=None, padding=None, vertical_position=None)[source]

Update cell style. If a parameter is None the default cell property will be used.

Parameters
Return type

Union[Widget, List[Widget]]

Returns

Cell widget

update_font(style)

Updates the Widget font. This method receives a style dict (non-empty).

Optional style keys
  • antialias (bool) – Font antialias

  • background_color (tuple) – Background color

  • color (tuple) – Font color

  • name (str) – Name of the font

  • readonly_color (tuple) – Readonly color

  • readonly_selected_color (tuple) – Readonly selected color

  • selected_color (tuple) – Selected color

  • size (int) – Size of the font

Note

If a key is not defined it will be rewritten using current font style from pygame_menu.widgets.core.widget.Widget.get_font_info() method.

Parameters

style (Dict[str, Any]) – Font style dict

Return type

Widget

Returns

Self reference

update_position()

Update the position of each widget.

Return type

Frame

Returns

Self reference