带样式的纯文本按钮#
gui_flat_button_styled.py#
1"""
2Example code showing how to style UIFlatButtons.
3
4If Python and Arcade are installed, this example can be run from the command line with:
5python -m arcade.examples.gui_flat_button_styled
6"""
7import arcade
8import arcade.gui
9import arcade.gui.widgets.buttons
10import arcade.gui.widgets.layout
11from arcade.gui import UIFlatButton
12
13
14class MyView(arcade.View):
15 def __init__(self):
16 super().__init__()
17 # --- Required for all code that uses UI element,
18 # a UIManager to handle the UI.
19 self.ui = arcade.gui.UIManager()
20
21 # Render button
22 red_style = {
23 "normal": UIFlatButton.UIStyle(
24 font_size=12,
25 font_name=("calibri", "arial"),
26 font_color=arcade.color.WHITE,
27 bg=arcade.color.RED,
28 border=None,
29 border_width=0,
30 ),
31 "hover": UIFlatButton.UIStyle(
32 font_size=12,
33 font_name=("calibri", "arial"),
34 font_color=arcade.color.WHITE,
35 bg=arcade.color.REDWOOD,
36 border=arcade.color.RED,
37 border_width=2,
38 ),
39 "press": UIFlatButton.UIStyle(
40 font_size=12,
41 font_name=("calibri", "arial"),
42 font_color=arcade.color.WHITE,
43 bg=arcade.color.RED_BROWN,
44 border=arcade.color.REDWOOD,
45 border_width=2,
46 ),
47 "disabled": UIFlatButton.UIStyle(
48 font_size=12,
49 font_name=("calibri", "arial"),
50 font_color=arcade.color.WHITE,
51 bg=arcade.color.COOL_GREY,
52 border=arcade.color.ASH_GREY,
53 border_width=2,
54 )
55 }
56
57 # Create a vertical BoxGroup to align buttons
58 self.v_box = arcade.gui.widgets.layout.UIBoxLayout(space_between=20)
59
60 # Create the buttons
61 demo_button_1 = arcade.gui.widgets.buttons.UIFlatButton(
62 text="Demo 1", width=200, style=UIFlatButton.DEFAULT_STYLE
63 )
64 demo_button_2 = arcade.gui.widgets.buttons.UIFlatButton(
65 text="Demo 2", width=200, style=red_style
66 )
67
68 self.v_box.add(demo_button_1)
69 self.v_box.add(demo_button_2)
70
71 # Create a widget to hold the v_box widget, that will center the buttons
72 ui_anchor_layout = arcade.gui.widgets.layout.UIAnchorLayout()
73 ui_anchor_layout.add(child=self.v_box, anchor_x="center_x", anchor_y="center_y")
74
75 self.ui.add(ui_anchor_layout)
76
77 def on_show_view(self):
78 self.window.background_color = arcade.color.DARK_BLUE_GRAY
79 # Enable UIManager when view is shown to catch window events
80 self.ui.enable()
81
82 def on_hide_view(self):
83 # Disable UIManager when view gets inactive
84 self.ui.disable()
85
86 def on_draw(self):
87 self.clear()
88 self.ui.draw()
89
90
91if __name__ == '__main__':
92 window = arcade.Window(800, 600, "UIExample", resizable=True)
93 window.show_view(MyView())
94 window.run()