menu_05.py Diff
menu_05.py
--- /home/docs/checkouts/readthedocs.org/user_builds/arcade-library/checkouts/3.3.1/doc/tutorials/menu/menu_04.py
+++ /home/docs/checkouts/readthedocs.org/user_builds/arcade-library/checkouts/3.3.1/doc/tutorials/menu/menu_05.py
@@ -3,6 +3,8 @@
Shows the usage of almost every gui widget, switching views and making a modal.
"""
+
+from typing import List
import arcade
import arcade.gui
@@ -113,12 +115,24 @@
@volume_button.event("on_click")
def on_click_volume_button(event):
- volume_menu = SubMenu()
+ volume_menu = SubMenu(
+ "Volume Menu",
+ "How do you like your volume?",
+ "Enable Sound",
+ ["Play: Rock", "Play: Punk", "Play: Pop"],
+ "Adjust Volume",
+ )
self.manager.add(volume_menu, layer=1)
@options_button.event("on_click")
def on_click_options_button(event):
- options_menu = SubMenu()
+ options_menu = SubMenu(
+ "Funny Menu",
+ "Too much fun here",
+ "Fun?",
+ ["Make Fun", "Enjoy Fun", "Like Fun"],
+ "Adjust Fun",
+ )
self.manager.add(options_menu, layer=1)
def on_hide_view(self):
@@ -146,6 +160,11 @@
def __init__(
self,
+ title: str,
+ input_text: str,
+ toggle_label: str,
+ dropdown_options: List[str],
+ slider_label: str,
):
super().__init__(size_hint=(1, 1))
@@ -154,6 +173,7 @@
frame.with_padding(all=20)
# Add a background to the window.
+ # Nine patch smoothes the edges.
frame.with_background(
texture=arcade.gui.NinePatchTexture(
left=7,
@@ -170,8 +190,58 @@
# The type of event listener we used earlier for the button will not work here.
back_button.on_click = self.on_click_back_button
- # Internal widget layout to handle widgets in this class.
+ title_label = arcade.gui.UILabel(text=title, align="center", font_size=20, multiline=False)
+ # Adding some extra space around the title.
+ title_label_space = arcade.gui.UISpace(height=30, color=arcade.color.DARK_BLUE_GRAY)
+
+ input_text_widget = arcade.gui.UIInputText(text=input_text, width=250).with_border()
+
+ # Load the on-off textures.
+ on_texture = arcade.load_texture(
+ ":resources:gui_basic_assets/simple_checkbox/circle_on.png"
+ )
+ off_texture = arcade.load_texture(
+ ":resources:gui_basic_assets/simple_checkbox/circle_off.png"
+ )
+
+ # Create the on-off toggle and a label
+ toggle_label = arcade.gui.UILabel(text=toggle_label)
+ toggle = arcade.gui.UITextureToggle(
+ on_texture=on_texture, off_texture=off_texture, width=20, height=20
+ )
+
+ # Align toggle and label horizontally next to each other
+ toggle_group = arcade.gui.UIBoxLayout(vertical=False, space_between=5)
+ toggle_group.add(toggle)
+ toggle_group.add(toggle_label)
+
+ # Create dropdown with a specified default.
+ dropdown = arcade.gui.UIDropdown(
+ default=dropdown_options[0], options=dropdown_options, height=20, width=250
+ )
+
+ slider_label = arcade.gui.UILabel(text=slider_label)
+ pressed_style = arcade.gui.UISlider.UIStyle(
+ filled_track=arcade.color.GREEN, unfilled_track=arcade.color.RED
+ )
+ default_style = arcade.gui.UISlider.UIStyle()
+ style_dict = {
+ "press": pressed_style,
+ "normal": default_style,
+ "hover": default_style,
+ "disabled": default_style,
+ }
+ # Configuring the styles is optional.
+ slider = arcade.gui.UISlider(value=50, width=250, style=style_dict)
+
widget_layout = arcade.gui.UIBoxLayout(align="left", space_between=10)
+ widget_layout.add(title_label)
+ widget_layout.add(title_label_space)
+ widget_layout.add(input_text_widget)
+ widget_layout.add(toggle_group)
+ widget_layout.add(dropdown)
+ widget_layout.add(slider_label)
+ widget_layout.add(slider)
widget_layout.add(back_button)