GUI

arcade.gui.Surface

class arcade.gui.Surface(*, size: Tuple[int, int], position: Tuple[int, int] = (0, 0), pixel_ratio: float = 1.0)[source]

Holds a arcade.gl.Framebuffer and abstracts the drawing on it. Used internally for rendering widgets.

activate()[source]

Save and restore projection and activate Surface buffer to draw on. Also resets the limit of the surface (viewport).

clear(color: Union[Tuple[int, int, int], List[int], Tuple[int, int, int, int]] = (0, 0, 0, 0))[source]

Clear the surface

draw() None[source]

Draws the current buffer on screen

draw_sprite(x, y, width, height, sprite)[source]

Draw a sprite to the surface

limit(x, y, width, height)[source]

Reduces the draw area to the given rect

property position: Tuple[int, int]

Get or set the surface position

resize(*, size: Tuple[int, int], pixel_ratio: float) None[source]

Resize the internal texture by re-allocating a new one

Parameters
  • size (Tuple[int,int]) – The new size in pixels (xy)

  • pixel_ratio (float) – The pixel scale of the window

property size

Size of the surface in window coordinates

property size_scaled

The physical size of the buffer

arcade.gui.UIManager

class arcade.gui.UIManager(window: Optional[arcade.application.Window] = None, auto_enable=False)[source]

V2 UIManager

manager = UIManager() manager.enable() # hook up window events

manager.add(Dummy())

def on_draw():

arcade.start_render()

manager.draw() # draws the UI on screen

add(widget: arcade.gui.widgets.UIWidget, *, index=None) arcade.gui.widgets.UIWidget[source]

Add a widget to the UIManager. Added widgets will receive ui events and be rendered.

By default the latest added widget will receive ui events first and will be rendered on top of others.

Parameters
  • widget – widget to add

  • index – position a widget is added, None has the highest priority

Returns

the widget

adjust_mouse_coordinates(x, y)[source]

This method is used, to translate mouse coordinates to coordinates respecting the viewport and projection of cameras. The implementation should work in most common cases.

If you use scrolling in the arcade.Camera you have to reset scrolling or overwrite this method using the camera conversion:

ui_manager.adjust_mouse_coordinates = camera.mouse_coordinates_to_world
debug()[source]

Walks through all widgets of a UIManager and prints out the rect

disable()[source]

Remove handler functions (on_…) from arcade.Window

If every arcade.View uses its own arcade.gui.UIManager, this method should be called in arcade.View.on_hide_view().

enable()[source]

Registers handler functions (on_…) to arcade.gui.UIElement

on_draw is not registered, to provide full control about draw order, so it has to be called by the devs themselves.

arcade.gui.UIDraggableMixin

class arcade.gui.UIDraggableMixin(x=0, y=0, width=100, height=100, children: Iterable[arcade.gui.widgets.UIWidget] = (), size_hint=None, size_hint_min=None, size_hint_max=None, style=None, **kwargs)[source]

UIDraggableMixin can be used to make any UIWidget draggable.

Example, create a draggable Frame, with a background, useful for window like constructs:

class DraggablePane(UITexturePane, UIDraggableMixin):

This does overwrite UILayout behaviour which position themselves, like UIAnchorWidget

arcade.gui.UIMouseFilterMixin

class arcade.gui.UIMouseFilterMixin(x: float = 0, y: float = 0, width: float = 100, height: float = 100, children: Iterable[arcade.gui.widgets.UIWidget] = (), size_hint=None, size_hint_min=None, size_hint_max=None, style=None, **kwargs)[source]

UIMouseFilterMixin can be used to catch all mouse events which occur inside this widget.

Usefull for window like widgets, UIMouseEvents should not trigger effects which are under the widget.

arcade.gui.UIWindowLikeMixin

class arcade.gui.UIWindowLikeMixin(x=0, y=0, width=100, height=100, children: Iterable[arcade.gui.widgets.UIWidget] = (), size_hint=None, size_hint_min=None, size_hint_max=None, style=None, **kwargs)[source]

Makes a widget window like:

  • handles all mouse events that occur within the widgets boundaries

  • can be dragged

arcade.gui.UIMessageBox

class arcade.gui.UIMessageBox(*, width: float, height: float, message_text: str, buttons=('Ok',), callback=None)[source]

A simple dialog box that pops up a message with buttons to close.