-
Notifications
You must be signed in to change notification settings - Fork 844
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
This file was deleted.
This file was deleted.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
from datetime import datetime | ||
|
||
from textual.app import App, ComposeResult | ||
from textual.reactive import reactive | ||
from textual.widgets import Digits | ||
|
||
|
||
class Clock(App): | ||
|
||
CSS = """ | ||
Screen {align: center middle} | ||
Digits {width: auto} | ||
""" | ||
|
||
time: reactive[datetime] = reactive(datetime.now, init=False) | ||
|
||
def compose(self) -> ComposeResult: | ||
yield Digits(f"{self.time:%X}") | ||
|
||
def watch_time(self) -> None: # (1)! | ||
self.query_one(Digits).update(f"{self.time:%X}") | ||
|
||
def update_time(self) -> None: | ||
self.time = datetime.now() | ||
|
||
def on_mount(self) -> None: | ||
self.set_interval(1, self.update_time) # (2)! | ||
|
||
|
||
if __name__ == "__main__": | ||
app = Clock() | ||
app.run() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
from datetime import datetime | ||
|
||
from textual.app import App, ComposeResult | ||
from textual.reactive import reactive | ||
from textual.widgets import Digits | ||
|
||
|
||
class Clock(App): | ||
|
||
CSS = """ | ||
Screen {align: center middle} | ||
Digits {width: auto} | ||
""" | ||
|
||
time: reactive[datetime] = reactive(datetime.now, recompose=True) | ||
|
||
def compose(self) -> ComposeResult: | ||
yield Digits(f"{self.time:%X}") | ||
|
||
def update_time(self) -> None: | ||
self.time = datetime.now() | ||
|
||
def on_mount(self) -> None: | ||
self.set_interval(1, self.update_time) | ||
|
||
|
||
if __name__ == "__main__": | ||
app = Clock() | ||
app.run() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
from textual.app import App, ComposeResult | ||
from textual.reactive import reactive | ||
from textual.widget import Widget | ||
from textual.widgets import Input, Label | ||
|
||
|
||
class Name(Widget): | ||
"""Generates a greeting.""" | ||
|
||
who = reactive("name", recompose=True) # (1)! | ||
|
||
def compose(self) -> ComposeResult: # (2)! | ||
yield Label(f"Hello, {self.who}!") | ||
|
||
|
||
class WatchApp(App): | ||
CSS_PATH = "refresh02.tcss" | ||
|
||
def compose(self) -> ComposeResult: | ||
yield Input(placeholder="Enter your name") | ||
yield Name() | ||
|
||
def on_input_changed(self, event: Input.Changed) -> None: | ||
self.query_one(Name).who = event.value | ||
|
||
|
||
if __name__ == "__main__": | ||
app = WatchApp() | ||
app.run() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
Input { | ||
dock: top; | ||
margin-top: 1; | ||
} | ||
|
||
Name { | ||
width: auto; | ||
height: auto; | ||
border: heavy $secondary; | ||
} |