GUI Scrollable Text#

For an introduction the GUI system, see GUI Concepts.

Screen shot gui_scrollable_text in action
gui_scrollable_text.py#
 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()