45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
from textual.app import App, ComposeResult
|
|
from textual.binding import Binding
|
|
from textual_fastdatatable import ArrowBackend, DataTable
|
|
|
|
ROWS = [
|
|
("lane", "swimmer", "country", "time"),
|
|
(5, "Chad le Clos", "South Africa", 51.14),
|
|
(4, "Joseph Schooling", "Singapore", 50.39),
|
|
(2, "Michael Phelps", "United States", 51.14),
|
|
(6, "László Cseh", "Hungary", 51.14),
|
|
(3, "Li Zhuhao", "China", 51.26),
|
|
(8, "Mehdy Metella", "France", 51.58),
|
|
(7, "Tom Shields", "United States", 51.73),
|
|
(10, "Darren Burns", "Scotland", 51.84),
|
|
(1, "Aleksandr Sadovnikov", "Russia", 51.84),
|
|
]
|
|
|
|
|
|
class TableApp(App):
|
|
"""Snapshot app for testing removal of rows.
|
|
Removes several rows, so we can check that the display of the
|
|
DataTable updates as expected."""
|
|
|
|
BINDINGS = [
|
|
Binding("r", "remove_row", "Remove Row"),
|
|
]
|
|
|
|
def compose(self) -> ComposeResult:
|
|
backend = ArrowBackend.from_records(ROWS, has_header=True)
|
|
yield DataTable(backend=backend)
|
|
|
|
def on_mount(self) -> None:
|
|
table = self.query_one(DataTable)
|
|
table.focus()
|
|
|
|
def action_remove_row(self):
|
|
table = self.query_one(DataTable)
|
|
table.remove_row(2)
|
|
table.remove_row(4)
|
|
table.remove_row(6)
|
|
|
|
|
|
app = TableApp()
|
|
if __name__ == "__main__":
|
|
app.run()
|