mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
from rich.segment import Segment
|
|
|
|
from textual.app import App, ComposeResult
|
|
from textual.widgets import Header, Footer
|
|
from textual.scroll_view import ScrollView
|
|
from textual.strip import Strip
|
|
from textual.geometry import Size
|
|
|
|
|
|
class TestScrollView(ScrollView, can_focus=True):
|
|
def __init__(self, height: int, border_title: str) -> None:
|
|
super().__init__()
|
|
self.virtual_size = Size(0, height)
|
|
self.border_title = border_title
|
|
|
|
def render_line(self, y: int) -> Strip:
|
|
return Strip(
|
|
[
|
|
Segment(f"Welcome to line {self.scroll_offset.y + y}"),
|
|
]
|
|
)
|
|
|
|
|
|
class ScrollViewTester(App[None]):
|
|
"""Check the scrollbar fits the end."""
|
|
|
|
CSS = """
|
|
TestScrollView {
|
|
background: $primary-darken-2;
|
|
border: round red;
|
|
}
|
|
|
|
"""
|
|
|
|
def compose(self) -> ComposeResult:
|
|
yield Header()
|
|
yield TestScrollView(height=1000, border_title=f"1")
|
|
yield Footer()
|
|
|
|
def on_ready(self) -> None:
|
|
self.query_one(TestScrollView).scroll_end(animate=False)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
ScrollViewTester().run()
|