Actor > Widgets#

Verwenden Sie Button, wenn ein Widget einfach nur eine Nachricht senden soll.

API-Referenz#

Knopf#

class miniworlds.actors.widgets.button.Button(text='', image='')[Quellcode]#

Anklickbares Button-Widget für eine Toolbar.

Beim Anklicken sendet der Button seinen Beschriftungstext als Nachricht an die Welt. Die Welt oder jeder Actor kann mit on_message darauf reagieren.

Parameter:
  • text – Der Text, der auf dem Button angezeigt wird. Derselbe Text wird beim Anklicken als Nachricht gesendet.

  • image – Optionaler Pfad zu einem Bild, das auf dem Button angezeigt wird.

Beispiele

toolbar = Toolbar()
start_button = Button("Start")
toolbar.add(start_button)
world.camera.add_right(toolbar)

@world.register
def on_message(self, message):
    if message == "Start":
        print("Game started")
__init__(text='', image='')[Quellcode]#

Erzeuge einen Toolbar-Button.

Parameter:
  • text – Die Button-Beschriftung und zugleich die Nachricht, die beim Anklicken gesendet wird.

  • image – Optionaler Bildpfad für den Button.

act()[Quellcode]#

Zählt die kurze Klick-Sperre herunter.

Die Sperre verhindert, dass der Button dieselbe Nachricht mehrfach in wenigen Frames sendet, während die Maustaste noch gedrückt ist.

Rückgabetyp:

None

on_clicked_left(mouse_pos)[Quellcode]#

Wird aufgerufen, wenn der Button angeklickt wird.

Standardmäßig wird dann eine Nachricht mit dem Button-Text an die Welt gesendet.

Rückgabetyp:

None

Beispiele

button = Button("Start Rocket")

@world.register
def on_message(self, message):
    if message == "Start Rocket":
        rocket.started = True

Etikett#

class miniworlds.actors.widgets.label.Label(position: Tuple[float, float] | None = (0, 0), *args, **kwargs)[Quellcode]#

Text-Label für die Verwendung in einer Toolbar.

Label wird typischerweise für Überschriften, Statustexte, Punkte oder andere Informationen in einer Toolbar verwendet.

Parameter:
  • text – Der Text, der im Label angezeigt wird.

  • image – Optionaler Pfad zu einem Bild, das statt des Textes oder zusätzlich dazu angezeigt wird.

Beispiele

toolbar = Toolbar()
score_label = Label("Score: 0")
toolbar.add(score_label)
world.camera.add_right(toolbar)
__init__(text, image=None)[Quellcode]#

Erzeuge ein Label-Widget.

Parameter:
  • text – Der vom Label angezeigte Text.

  • image – Optionaler Bildpfad.

Input#

class miniworlds.actors.widgets.input.Input(position: Tuple[float, float] | None = (0, 0), *args, **kwargs)[Quellcode]#

Text-Eingabefeld zur Verwendung in einer Toolbar.

Klicke in das Feld, um es zu fokussieren, und tippe dann, um Text einzugeben. Der Textcursor lässt sich mit den Pfeiltasten bewegen; BACKSPACE löscht das Zeichen links vom Cursor und DELETE das Zeichen rechts vom Cursor. Es können höchstens max_chars Zeichen eingegeben werden.

Solange das Eingabefeld fokussiert ist, blinkt der Textcursor; ohne Fokus wird der Cursor ausgeblendet.

Beispiele

toolbar = Toolbar()
name_input = Input((0, 0))
name_input.max_chars = 20
toolbar.add(name_input)
world.camera.add_right(toolbar)
property cursor_position#
property max_chars#
on_focus()[Quellcode]#
on_focus_lost()[Quellcode]#
on_key_down(keys)[Quellcode]#

Wird einmal aufgerufen, wenn eine Taste gedrückt wird.

Registriere on_key_down_<buchstabe> (zum Beispiel on_key_down_a), wenn nur auf einen bestimmten Buchstaben reagiert werden soll.

Für Pfeiltasten verwende on_key_down_left, on_key_down_right, on_key_down_up oder on_key_down_down.

Parameter:

key – Liste von Varianten des Tastennamens, zum Beispiel ["A", "a"] oder ["left"].

Beispiele

@player.register
def on_key_down(self, key):
    if "left" in key:
        self.direction = "left"
    elif "right" in key:
        self.direction = "right"
    self.move()

@player.register
def on_key_down_space(self):
    self.send_message("jump")
on_text_input(text)[Quellcode]#

Fügt zusammengesetzten Text (inklusive Umlaute und Leerzeichen) an der Cursorposition ein.

Druckbare Zeichen kommen über das text_input-Ereignis an, daher werden Tastennamen wie “SPACE” nie als wörtlicher Text eingefügt.

set_text(text)[Quellcode]#

Setzt den Text des Widgets.

Werte vom Typ int und float werden in Zeichenketten umgewandelt.

update_cursor()[Quellcode]#

YesNoButton#

class miniworlds.actors.widgets.yesno.YesNoButton(position: Tuple[float, float] | None = (0, 0), *args, **kwargs)[Quellcode]#

Ein Widget mit einem Ja- und einem Nein-Button nebeneinander.

Verwende get_yes_button() und get_no_button(), um auf die beiden Buttons zuzugreifen, z. B. um sie zu gestalten oder eigene Klick-Handler zu registrieren.

Parameter:
  • yes_text – Beschriftung des Ja-Buttons.

  • no_text – Beschriftung des Nein-Buttons.

Beispiele

toolbar = Toolbar()
choice = YesNoButton("Yes", "No")
choice.get_yes_button().background_color = (0, 255, 0)
toolbar.add(choice)
get_no_button()[Quellcode]#
get_yes_button()[Quellcode]#

CounterLabel#

class miniworlds.actors.widgets.counter.CounterLabel(position: Tuple[float, float] | None = (0, 0), *args, **kwargs)[Quellcode]#

Ein Zähler-Label enthält eine description und einen counter.

Der Zähler startet mit dem Wert 0 und kann mit add und sub verändert werden.

add(value)[Quellcode]#

Erhöhe den Zähler um value.

get_value()[Quellcode]#
set(value)[Quellcode]#
sub(value)[Quellcode]#

Verringere den Zähler um value.

update_text()[Quellcode]#

FPSLabel#

class miniworlds.actors.widgets.fps.FPSLabel(world=None, text='FPS', img_path=None)[Quellcode]#

Label, das die gemessenen Frames pro Sekunde anzeigt.

Das Label misst die Zeit zwischen zwei Frames selbst; ein Clock-Objekt ist nicht nötig. Füge es zu einer Toolbar hinzu, damit es einmal pro Frame aktualisiert wird.

Parameter:
  • world – Optionale Welt (wird ignoriert; dient der Abwärtskompatibilität).

  • text – Präfix, das vor dem gemessenen Wert angezeigt wird.

  • img_path – Optionaler Pfad zu einem Bild, das neben dem Text angezeigt wird.

Beispiele

toolbar = Toolbar()
toolbar.add(FPSLabel(text="FPS"))
world.camera.add_right(toolbar)

TimeLabel#

class miniworlds.actors.widgets.time.TimeLabel(world=None, text='Time', img_path=None)[Quellcode]#

Label, das die aktuelle Frame-Nummer einer Welt anzeigt.

Parameter:
  • world – Die Welt, deren Frame-Zähler angezeigt wird. Wird keine Welt übergeben, wird die Welt verwendet, zu der das Widget hinzugefügt wird.

  • text – Präfix, das vor der Frame-Nummer angezeigt wird.

  • img_path – Optionaler Pfad zu einem Bild, das neben dem Text angezeigt wird.

Beispiele

toolbar = Toolbar()
toolbar.add(TimeLabel(world, text="Frame"))
world.camera.add_right(toolbar)