In diesem Artikel erfahren wir, wie wir mit Python Schaltflächen in Arcade erstellen können.

Schaltflächen hinzufügen

In Arcade können wir unserem Spiel ganz einfach Schaltflächen hinzufügen. 

Dazu verwenden wir einige Funktionen:

UIManager():

Syntax: arcade.gui.UIManager(window, auto_enable)

Parameter:



  • Fenster : Unser Spielfenster
  • auto_enable : Akzeptiert einen booleschen Wert

UIBoxLayout():

Syntax: arcade.gui.UIBoxLayout(x, y, vertikal, ausrichten, Kinder, Größe)

Parameter:

  • x : x-Koordinate von unten links
  • y : x-Koordinate von unten links
  • vertikal : Layout untergeordnete Elemente vertikal (True) oder horizontal (False)
  • align : Kinder in orthogonaler Richtung ausrichten (x: links, zentriert, rechts / y: oben, zentriert, unten)
  • children : Anfängliche Kinder, weitere können hinzugefügt werden
  • size : Ein Hinweis für UILayout, wenn dieses UIWidget wachsen möchte

UIFlatButton():

Syntax: arcade.gui.UIFlatButton( x, y, Breite, Höhe, Text, Stil)

Parameter:

  • x : x-Koordinate des Widgets.
  • y : y-Koordinate des Widgets.
  • width : Breite des Widgets. Standardmäßig die Texturbreite, wenn nicht angegeben.
  • Höhe : Höhe des Widgets. Standardmäßig die Texturhöhe, wenn nicht angegeben.
  • text : Text, der der Schaltfläche hinzugefügt werden soll.
  • style : Wird verwendet, um die Schaltfläche zu stylen

Um nun unsere Schaltfläche zu erstellen, erstellen wir eine Klasse namens MainClass und innerhalb dieser Klasse werden wir eine Variable für den UIManager initialisieren. Danach erstellen wir unsere Schaltfläche mit UIFlatButton() und fügen diese Schaltfläche dann in unserem UIManager hinzu. Dann erstellen wir eine on_draw()-Funktion, um unsere Schaltfläche zu zeichnen.

Nachfolgend die Umsetzung:

Python3

# Importing arcade module
import arcade
# Importing arcade gui
import arcade.gui
  
# Creating MainGame class
class MainGame(arcade.Window):
    def __init__(self):
        super().__init__(600, 600, title="Buttons")
  
        # Changing background color of screen
        arcade.set_background_color(arcade.color.BLUE)
  
        # Creating a UI MANAGER to handle the UI
        self.uimanager = arcade.gui.UIManager()
        self.uimanager.enable()
  
        # Creating Button using UIFlatButton
        start_button = arcade.gui.UIFlatButton(text="Start Game",
                                               width=200)
  
        # Adding button in our uimanager
        self.uimanager.add(
            arcade.gui.UIAnchorWidget(
                anchor_x="center_x",
                anchor_y="center_y",
                child=start_button)
        )
  
    # Creating on_draw() function to draw on the screen
  
    def on_draw(self):
        arcade.start_render()
          
        # Drawing our ui manager
        self.uimanager.draw()
  
  
# Calling MainGame class
MainGame()
arcade.run()

Ausgabe:

Hinzufügen von Funktionen in Button

Jetzt erstellen wir eine on_buttonclick()-Funktion, die jedes Mal aufgerufen wird, wenn der Benutzer auf die Schaltfläche drückt.

Python3

# Importing arcade module
import arcade
# Importing arcade gui
import arcade.gui
  
# Creating MainGame class
class MainGame(arcade.Window):
    def __init__(self):
        super().__init__(600, 600, title="Buttons")
  
        # Changing background color of screen
        arcade.set_background_color(arcade.color.BLUE)
  
        # Creating a UI MANAGER to handle the UI
        self.uimanager = arcade.gui.UIManager()
        self.uimanager.enable()
  
        # Creating Button using UIFlatButton
        start_button = arcade.gui.UIFlatButton(text="Start Game",
                                               width=200)
  
        # Assigning our on_buttonclick() function
        start_button.on_click = self.on_buttonclick
  
        # Adding button in our uimanager
        self.uimanager.add(
            arcade.gui.UIAnchorWidget(
                anchor_x="center_x",
                anchor_y="center_y",
                child=start_button)
        )
  
    # This function will be called everytime the user
    # presses the start button
    def on_buttonclick(self, event):
        print("Button is clicked")
  
    # Creating on_draw() function to draw on the screen
    def on_draw(self):
        arcade.start_render()
          
        # Drawing our ui manager
        self.uimanager.draw()
  
  
# Calling MainGame class
MainGame()
arcade.run()

Ausgabe: