36 lines
947 B
Python
36 lines
947 B
Python
|
import csv
|
||
|
import io
|
||
|
|
||
|
from textual.app import App, ComposeResult
|
||
|
from textual_fastdatatable import ArrowBackend, DataTable
|
||
|
|
||
|
CSV = """lane,swimmer,country,time
|
||
|
4,Joseph Schooling,Singapore,50.39
|
||
|
2,Michael Phelps,United States,51.14
|
||
|
5,Chad le Clos,South Africa,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
|
||
|
1,Aleksandr Sadovnikov,Russia,51.84"""
|
||
|
|
||
|
|
||
|
class TableApp(App):
|
||
|
def compose(self) -> ComposeResult:
|
||
|
rows = csv.reader(io.StringIO(CSV))
|
||
|
labels = next(rows)
|
||
|
data = [row for row in rows]
|
||
|
backend = ArrowBackend.from_pydict(
|
||
|
{label: [row[i] for row in data] for i, label in enumerate(labels)}
|
||
|
)
|
||
|
table = DataTable(
|
||
|
backend=backend, cursor_type="range", max_column_content_width=8
|
||
|
)
|
||
|
table.focus()
|
||
|
yield table
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
app = TableApp()
|
||
|
app.run()
|