Change Vertical to DataTable

master
VikingKong 3 years ago
parent 390c393b0c
commit 7fd487058d

@ -1,6 +1,6 @@
from textual.containers import Container, Vertical from textual.containers import Container, Vertical
from textual.app import ComposeResult, App from textual.app import ComposeResult, App
from textual.widgets import Static, Header from textual.widgets import Static, Header, DataTable
class FeedPane(Vertical): class FeedPane(Vertical):
@ -9,6 +9,9 @@ class FeedPane(Vertical):
self.content = content self.content = content
self.id = "feed-pane" self.id = "feed-pane"
def add(self, e):
self.content.append(e)
def compose(self): def compose(self):
yield Vertical(*self.content, id="left-container") yield Vertical(*self.content, id="left-container")
@ -25,9 +28,6 @@ class FeedItem(Static):
self.update(self.content) self.update(self.content)
self.on_event self.on_event
def on_click(self):
self.update("x")
class GUI(App): class GUI(App):
CSS_PATH = "app.css" CSS_PATH = "app.css"
@ -37,21 +37,33 @@ class GUI(App):
self.i = 0 self.i = 0
def on_key(self, event): def on_key(self, event):
item = self.query(FeedItem)[self.i] # item = self.query(FeedItem)[self.i]
item.set_styles("color: auto;") # item.set_styles("color: auto;")
if event.key == "j": if event.key == "j":
self.i += 1 self.i += 1
elif event.key == "k": elif event.key == "k":
self.i -= 1 self.i -= 1
elif event.key == "r":
pane = self.query_one(DataTable)
pane.data = {}
pane.row_count = 0
pane._line_no = 0
pane._y_offsets = []
pane._require_update_dimensions = True
pane.check_idle()
elif event.key == "a":
pane = self.query_one(DataTable)
pane.add_rows([["XXX"]])
else: else:
pass pass
item = self.query(FeedItem)[self.i] # item = self.query(FeedItem)[self.i]
item.set_styles("color: blue;") # item.set_styles("color: blue;")
def compose(self) -> ComposeResult: def compose(self) -> ComposeResult:
yield Header() yield Header()
yield Container( yield Container(
FeedPane([FeedItem(f"Feed# {number}", number) for number in range(15)]), # FeedPane([FeedItem(f"Feed# {number}", number) for number in range(15)]),
DataTable(),
Vertical( Vertical(
*[Static("Horizontally"), *[Static("Horizontally"),
Static("Positioned"), Static("Positioned"),
@ -62,6 +74,12 @@ class GUI(App):
id="app-grid", id="app-grid",
) )
def on_mount(self):
dt = self.query_one(DataTable)
dt.add_column("Feeds", width = 60)
# dt.add_rows([[FeedItem(f"Feed# {number}", number)] for number in range(15)])
dt.add_rows([[str(number)] for number in range(15)])
dt.focus()
if __name__ == "__main__": if __name__ == "__main__":
app = GUI() app = GUI()

Loading…
Cancel
Save