GUI Scrollable Text#
For an introduction the GUI system, see GUI Concepts.
1"""
2If Python and Arcade are installed, this example can be run from the command line with:
3python -m arcade.examples.gui_scrollable_text
4"""
5from __future__ import annotations
6
7import arcade
8from arcade import load_texture
9from arcade.gui import UIManager, UIInputText, UITextArea
10from arcade.gui.nine_patch import NinePatchTexture
11
12LOREM_IPSUM = (
13 "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget pellentesque velit. "
14 "Nam eu rhoncus nulla. Fusce ornare libero eget ex vulputate, vitae mattis orci eleifend. "
15 "Donec quis volutpat arcu. Proin lacinia velit id imperdiet ultrices. Fusce porta magna leo, "
16 "non maximus justo facilisis vel. Duis pretium sem ut eros scelerisque, a dignissim ante "
17 "pellentesque. Cras rutrum aliquam fermentum. Donec id mollis mi.\n"
18 "\n"
19 "Nullam vitae nunc aliquet, lobortis purus eget, porttitor purus. Curabitur feugiat purus sit "
20 "amet finibus accumsan. Proin varius, enim in pretium pulvinar, augue erat pellentesque ipsum, "
21 "sit amet varius leo risus quis tellus. Donec posuere ligula risus, et scelerisque nibh cursus "
22 "ac. Mauris feugiat tortor turpis, vitae imperdiet mi euismod aliquam. Fusce vel ligula volutpat, "
23 "finibus sapien in, lacinia lorem. Proin tincidunt gravida nisl in pellentesque. Aenean sed "
24 "arcu ipsum. Vivamus quam arcu, elementum nec auctor non, convallis non elit. Maecenas id "
25 "scelerisque lectus. Vivamus eget sem tristique, dictum lorem eget, maximus leo. Mauris lorem "
26 "tellus, molestie eu orci ut, porta aliquam est. Nullam lobortis tempor magna, egestas lacinia lectus.\n"
27)
28
29
30class MyView(arcade.View):
31 def __init__(self):
32 super().__init__()
33 self.ui = UIManager()
34
35 bg_tex = NinePatchTexture(
36 left=5,
37 right=5,
38 top=5,
39 bottom=5,
40 texture=load_texture(":resources:gui_basic_assets/window/grey_panel.png"))
41 text_area = UITextArea(
42 x=100,
43 y=200,
44 width=200,
45 height=300,
46 text=LOREM_IPSUM,
47 text_color=(0, 0, 0, 255),
48 )
49
50 self.ui.add(text_area.with_padding(all=15).with_background(texture=bg_tex))
51
52 self.ui.add(
53 UIInputText(x=340, y=200, width=200, height=50, text="Hello")
54 .with_background(texture=bg_tex)
55 .with_padding(all=10)
56 )
57
58 self.ui.add(
59 UIInputText(x=340, y=110, width=200, height=50, text="").with_border(),
60 )
61
62 def on_show_view(self):
63 self.window.background_color = arcade.color.DARK_BLUE_GRAY
64 # Enable UIManager when view is shown to catch window events
65 self.ui.enable()
66
67 def on_hide_view(self):
68 # Disable UIManager when view gets inactive
69 self.ui.disable()
70
71 def on_draw(self):
72 self.clear()
73 self.ui.draw()
74
75
76if __name__ == '__main__':
77 window = arcade.Window(800, 600, "UIExample", resizable=True)
78 window.show_view(MyView())
79 window.run()