GUI Custom Style

GUI Custom Style
gui_custom_style.py
 1"""
 2This example shows how to programmatically change the GUI style.
 3
 4You can run this example with:
 5python -m arcade.examples.gui_custom_style
 6
 7This can also be done with a yaml file.
 8See:
 9https://github.com/pvcraven/arcade/blob/development/arcade/resources/style/default.yml
10and the UIStyle.from_file() command.
11"""
12import arcade
13
14import arcade.gui
15from arcade.gui import UIFlatButton, UIGhostFlatButton, UIManager
16from arcade.gui.ui_style import UIStyle
17
18
19class MyView(arcade.View):
20    """ Main program view """
21
22    def __init__(self):
23        """ Set up this view """
24        super().__init__()
25
26        self.ui_manager = UIManager()
27
28    def setup(self):
29        """ Setup the view """
30        self.ui_manager.purge_ui_elements()
31        flat = UIFlatButton('Hello world', center_x=200, center_y=self.window.height // 2, width=200, height=40)
32        flat.set_style_attrs(
33            font_color=arcade.color.WHITE,
34            font_color_hover=arcade.color.WHITE,
35            font_color_press=arcade.color.WHITE,
36            bg_color=(51, 139, 57),
37            bg_color_hover=(51, 139, 57),
38            bg_color_press=(28, 71, 32),
39            border_color=(51, 139, 57),
40            border_color_hover=arcade.color.WHITE,
41            border_color_press=arcade.color.WHITE
42        )
43        self.ui_manager.add_ui_element(flat)
44
45        # creates a new class, which will match the id
46        UIStyle.default_style().set_class_attrs(
47            'right_button',
48            font_color=arcade.color.WHITE,
49            font_color_hover=arcade.color.WHITE,
50            font_color_press=arcade.color.WHITE,
51            bg_color=(135, 21, 25),
52            bg_color_hover=(135, 21, 25),
53            bg_color_press=(122, 21, 24),
54            border_color=(135, 21, 25),
55            border_color_hover=arcade.color.WHITE,
56            border_color_press=arcade.color.WHITE
57        )
58        self.ui_manager.add_ui_element(UIGhostFlatButton(
59            'Hello world',
60            center_x=600,
61            center_y=self.window.height // 2,
62            width=200,
63            height=40,
64            id='right_button'
65        ))
66
67    def on_draw(self):
68        """ Draw this view """
69        arcade.start_render()
70        arcade.set_background_color(arcade.color.BLACK)
71
72    def on_show_view(self):
73        """ Show this view """
74        self.setup()
75
76    def on_hide_view(self):
77        self.ui_manager.unregister_handlers()
78
79
80if __name__ == '__main__':
81    window = arcade.Window(title='ARCADE_GUI')
82    window.show_view(MyView())
83    arcade.run()