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 arcade.gui.nine_patch import NinePatchTexture
 6
 7import arcade
 8from arcade import load_texture
 9from arcade.gui import UIManager, UIInputText, UITextArea
10
11LOREM_IPSUM = (
12    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget pellentesque velit. "
13    "Nam eu rhoncus nulla. Fusce ornare libero eget ex vulputate, vitae mattis orci eleifend. "
14    "Donec quis volutpat arcu. Proin lacinia velit id imperdiet ultrices. Fusce porta magna leo, "
15    "non maximus justo facilisis vel. Duis pretium sem ut eros scelerisque, a dignissim ante "
16    "pellentesque. Cras rutrum aliquam fermentum. Donec id mollis mi.\n"
17    "\n"
18    "Nullam vitae nunc aliquet, lobortis purus eget, porttitor purus. Curabitur feugiat purus sit "
19    "amet finibus accumsan. Proin varius, enim in pretium pulvinar, augue erat pellentesque ipsum, "
20    "sit amet varius leo risus quis tellus. Donec posuere ligula risus, et scelerisque nibh cursus "
21    "ac. Mauris feugiat tortor turpis, vitae imperdiet mi euismod aliquam. Fusce vel ligula volutpat, "
22    "finibus sapien in, lacinia lorem. Proin tincidunt gravida nisl in pellentesque. Aenean sed "
23    "arcu ipsum. Vivamus quam arcu, elementum nec auctor non, convallis non elit. Maecenas id "
24    "scelerisque lectus. Vivamus eget sem tristique, dictum lorem eget, maximus leo. Mauris lorem "
25    "tellus, molestie eu orci ut, porta aliquam est. Nullam lobortis tempor magna, egestas lacinia lectus.\n"
26)
27
28
29class MyWindow(arcade.Window):
30    def __init__(self):
31        super().__init__(800, 600, "Scrollable Text", resizable=True)
32        self.manager = UIManager()
33        self.manager.enable()
34        arcade.set_background_color(arcade.color.DARK_BLUE_GRAY)
35
36        bg_tex = NinePatchTexture(
37            left=5,
38            right=5,
39            top=5,
40            bottom=5,
41            texture=load_texture(":resources:gui_basic_assets/window/grey_panel.png"))
42        text_area = UITextArea(
43            x=100,
44            y=200,
45            width=200,
46            height=300,
47            text=LOREM_IPSUM,
48            text_color=(0, 0, 0, 255),
49        )
50
51        self.manager.add(text_area.with_padding(all=15).with_background(texture=bg_tex))
52
53        self.manager.add(
54            UIInputText(x=340, y=200, width=200, height=50, text="Hello")
55            .with_background(texture=bg_tex)
56            .with_padding(all=10)
57        )
58
59        self.manager.add(
60            UIInputText(x=340, y=110, width=200, height=50, text="").with_border(),
61        )
62
63    def on_draw(self):
64        self.clear()
65        self.manager.draw()
66
67
68window = MyWindow()
69arcade.run()