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()