ThorPy

A GUI library for pygame

User Guide - Cheat Sheet

List of ThorPy elements - List of ThorPy events - List of style methods

List of ThorPy elements

Here are summarized the available built-in elements in ThorPy. We provide some examples pointing out specificities of the elements that can be given during initialization. This does not embrace all the parameters of the different elements. Finally, many composite elements are available, such as alerts, dialog and choice boxes, image buttons, ... You can find them on the examples page.

As a user, remember that the wrappers thorpy.make_button("my button", my_function) and thorpy.make_text("my text") most of the time do the job for planty of functionalities.

AnimatedGif: read and play an animated gif.
Example: AnimatedGif("path/to/myGif")
Full prototype: AnimatedGif(path, colorkey=None, low=2, nread=float("inf"))

Background: define a background for another element or menu.
Example: Background(color=(255,255,255))
Example: Background(image="path/to/myImage", elements=some_elements)
Full prototype: Background(color=None, image=None, elements=None, mode="scale to screen")

Box: box containing other elements
Example: Box(elements=some_elements)
Full prototype: Box(elements, size=None)

Browser: file and folder browser
Example: Browser(path="/my/path/"), Browser.make"./", folders=False, file_types=(".txt", ".png"))
Full prototype: Browser(path="./", ddl_size=None, folders=True, files=True, file_types=None, text="")

BrowserLauncher: button for launching a file browser
Example: BrowserLauncher(a_browser, "Choose a file")
Full prototype: BrowserLauncher(browser, const_text="", var_text="", show_select=True, click_cancel=False, text_ok="Ok", text_cancel="Cancel", size=style.MAKE_SIZE)

BrowserLight: file and folder browser restricted to a given directory
Example: BrowserLight(path="/my/path/"), BrowserLight("./", folders=False, file_types=(".txt", ".png"))
Full prototype: BrowserLight(path="./", ddl_size=None, folders=True, files=True, file_types=None, text="")

Checker: check or radio box
Example: Checker("Do you like potatoes?", value=True), Checker("my radio", typ="radio")
Full prototype: Checker(text="", value=False, type_="checkbox")

Clickable: pressable and hoverable element
Example: Clickable("hello")
Full prototype: Clickable(text="", elements=None, size=style.MAKE_SIZE)

ClickDraggable: togglable clickable that can be dragged/dropped according to its state pressed/unpressed
Example: ClickDraggable("hello")
Full prototype: ClickDraggable(text="", elements=None, size=style.MAKE_SIZE)

ColorSetter: box in which three sliders and a visualization square provide a way to define a color
Example: ColorSetter("Choose a color", value=(255, 0, 0))
Full prototype: ColorSetter(text="", elements=None, size=None, color_size=(50, 50), value=(255, 0, 0))

ColorSetterLauncher: button for launching a ColorSetter instance
Example: ColorSetterLauncher(aColorSetter, text="Choose color", show_select=True, click_cancel=False)
Full prototype: ColorSetterLauncher(colorsetter, text="", show_select=True, click_cancel=False)

Draggable: clickable that can be dragged/dropped
Example: Draggable("hello")
Full prototype: Draggable(text="", elements=None, size=style.MAKE_SIZE)

DropDownList: vertical list of multiple texts that can be selected
Example: DropDownList(titles=["proposition1", "prop2", "prop3"])
Full prototype: DropDownList(titles, size="auto", heavy=False, folders=None, margins=None, x=None)

DropDownListLauncher: button for launching a drop down list
Example: DropDownListLauncher(const_text="Choose", titles=list_of_titles)
Full prototype: DropDownListLauncher(const_text="", var_text="", titles=None, ddlf_size="auto", show_select=True, click_cancel=True, size=style.MAKE_SIZE)

DynamicShadow: shadow that changes when linked element changes
Shadows are highly parametrizable. They do not provide a make initializer (thus you must call finish method!). Please refer to this simple example.
Example: DynamicShadow(target=an_element)

Element: most simple graphical element
Example: Element(text="hello"), Element("hello", elements=some_children)
Full prototype: Element(text="", elements=None, size=style.MAKE_SIZE)

Ghost: non-graphical element
Example: Ghost(), Ghost(elements=some_children)
Full prototype: Ghost(elements=None)

Hoverable: hoverable element (reacts on mouse hover)
Example: Hoverable("hello")
Full prototype: Hoverable(text="", elements=None, size=style.MAKE_SIZE)

HoverZone: ghost element that can post hover events
Example: HoverZone(pygame.Rect(100,50,200,200)), HoverZone(some_element.get_rect())
Full prototype: HoverZone(zone=None, elements=None)

Image: image element
Example: Image(path="path/to/an/image")
Full prototype: Image(path=None, color=None)

Inserter: element for text insertion
Example: Inserter(name="Write here:", value="just here")
Full prototype: Inserter(name="", elements=None, value="", size=(None, None))

KeyPressable: element that is pressed when a key is pressed
Example: KeyPressable(key=pygame.K_t, text="hello")
Full prototype: KeyPressable(text="", elements=None, size=style.MAKE_SIZE)

KeyTogglable: element that toggles according to a key press
Example: KeyTogglable(key=pygame.K_t, text="hello")
Full prototype: KeyTogglable(text="", elements=None, size=style.MAKE_SIZE)

LifeBar: allows for the representation of a life bar or progress bar
Example: LifeBar("Remaining time")
Full prototype: LifeBar(text="", color=(255,165,0), text_color=(0,0,0), size=(200,30), font_size=None, type_="h")

Line: separation line
Example: Line(size=100, type_="horizontal")
Full prototype: Line(size, type_, color=None, pressed=True)

MultilineText: pure text on multiple lines (of course can be only 1 line)
Example: MultilineText(text="1st line!\n2nd line...", size=(100,100))
Full prototype: MultilineText(text="", elements=None, size=style.MAKE_SIZE)

OneLineText: pure text on only one line
Example: OneLineText("hello")
Full prototype: OneLineText(text="", elements=None, size=style.MAKE_SIZE)

ParamSetter: Put automatically defined elements in a box, in order to set variables.
Example: ParamSetter(varsets=a_varset)(see game examples)
Full prototype: ParamSetter(varsets, elements=None, size=None)

ParamSetterLauncher: Button that launch a ParamSetter.
Example: ParamSetterLauncher(varsets=varset_list_or_paramsetter)(see game examples)
Full prototype: ParamSetterLauncher(params, text="", title=None, click_cancel=False, text_ok="Ok", text_cancel="Cancel", paramsetter_elements=None, size=style.MAKE_SIZE)

Pressable: element that can be pressed/unpressed (with mouse by default)
Example: Pressable("hello")
Full prototype: Pressable(text="", elements=None, size=style.MAKE_SIZE)

SliderX: slider for choosing a value
Example: SliderX(length=100, limvals=(4, 12), text="hello", initial_value=10, typ=float)
Full prototype: SliderX(length, limvals=None, text="", type_=float, initial_value=None)

StaticShadow: shadow that follows its target element
Shadows are highly parametrizable. They do not provide a make initializer (thus you must call finish method!). Please refer to this simple example.
Example: StaticShadow(target_element=an_element)

Togglable: element that can be toggled by mouse
Example: Togglable("hello")
Full prototype: Togglable(text="", elements=None, size=style.MAKE_SIZE)

List of ThorPy events

Here are summarized the id attribute of events automatically posted by built-in ThorPy elements. They are all stored in thorpy.constants module. They are all regrouped under the pygame event whose type is thorpy.constants.THORPY_EVENT (see this important note on thorpy events). We summarize below the thorpy events avalaible, giving for each of them the constant name corresponding to their id attribute. With each event are listed its other attributes.

A tutorial on reactions can be found here.

Id Description Attributes
EVENT_CANCEL Posted when a cancel button from a box has been clicked el: element canceled
EVENT_CHANGE_STATE Posted when the state of an element has been changed el: concerned element
EVENT_DDL Posted when a string has been selected in a Drop Down List. Can be posted by a DropDownList or a DropDownListLauncher. el: DropDownList element; value: selected text
EVENT_DONE Posted when a button for validating something has been clicked el: concerned element
EVENT_DRAG Posted each time an element is dragged el: dragged element
EVENT_HOVER Posted when an hoverable element is hovered el: hovered element
EVENT_INSERT Posted when a text has been inserted (and validated) el: inserter element; value: inserted text
EVENT_LAUNCH Posted when an element has been dynamically launched in a menu el: launched element
EVENT_PRESS Posted when an element has been pressed (i.e it enters the state 'pressed') el: pressed element
EVENT_SLIDE Posted when a slider's dragger has been slided el: slider element
EVENT_TIME Posted by the menu, except if it is a thorpy.BasicMenu instance. The menu tries to post this event at each frame (so if your menu has attribute fps = 60, you can expect this event to occur 60 times per second tick: the number of milliseconds passed between the previous two frames of the menu
EVENT_UNPRESS Posted when an element has been unpressed el: unpressed element
EVENT_UNLAUNCH Posted when an element has been dynamically removed from a menu el: concerned element
EVENT_WHEEL Posted when mousewheel has been used on an element that handles it el: concerned element

List of ThorPy basic styling methods

The following methods can be used on all graphical elements for basic styling changes. Also, consider using thorpy.set_theme function if you plan to change the style of a whole group of elements (example: thorpy.set_theme('human')). Moreover, you are free to redefine all the graphical default values contained into thorpy.style (example: thorpy.style.MARGINS = (20,10) will change the default x-y margins for all the next elements initialized). Finally, the tutorial section contains a tutorial about defining your own design template.

set_size(new_size): resize the element. The new size is a tuple whose elements can be None: in this case, the resizing doesn't occur on the corresponding axis.

scale_to_title(): resize the element so that it fits its textual content. You can optionally pass a tuple as argument, indicating the margins (otherwise the default margins are used).

set_main_color(new_color): change the element's main color. The color can be in the format (R,G,B) or (R,G,B,A). The element's painter determines how this influe the appearance.

set_font(new_font): change the font of the element's text. If the font cannot be found in your system, then this instruction is ignored.

set_font_color(color): change the color of the font.

set_font_size(size): change the font size. The size is a integer corresponding to the size of the font in pts (typical value: 12)

set_font_color_hover(color): change the color of the font when hovered, for hoverable elements.