mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Implement a Progress Bar widget. (#2333)
* First prototype of PB.
* Repurpose UnderlineBar.
* Factor out 'Bar' widget.
* Revert "Factor out 'Bar' widget."
This reverts commit 0bb4871adf.
* Add Bar widget.
* Cap progress at 100%.
* Add skeleton for the ETA label.
[skip ci]
* Add ETA display.
* Improve docstrings.
* Directly compute percentage.
* Watch percentage changes directly.
[skip ci]
* Documentation.
* Make reactive percentage private.
Instead, we create a public read-only percentage property.
* Update griffe to fix documentation issue.
Related issues: #1572, https://github.com/mkdocstrings/griffe/issues/128.
Related PRs: https://github.com/mkdocstrings/griffe/pull/135.
* Add example and docs.
* Address review feedback.
[skip ci]
* More documentation.
* Add tests.
* Changelog.
* More tests.
* Fix/fake tests.
* Final tweaks.
This commit is contained in:
committed by
GitHub
parent
ee0d407067
commit
4148b1d450
40
docs/examples/widgets/progress_bar.py
Normal file
40
docs/examples/widgets/progress_bar.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from textual.app import App, ComposeResult
|
||||
from textual.containers import Center, VerticalScroll
|
||||
from textual.widgets import Button, Header, Input, Label, ProgressBar
|
||||
|
||||
|
||||
class FundingProgressApp(App[None]):
|
||||
CSS_PATH = "progress_bar.css"
|
||||
|
||||
TITLE = "Funding tracking"
|
||||
|
||||
def compose(self) -> ComposeResult:
|
||||
yield Header()
|
||||
with Center():
|
||||
yield Label("Funding: ")
|
||||
yield ProgressBar(total=100, show_eta=False) # (1)!
|
||||
with Center():
|
||||
yield Input(placeholder="$$$")
|
||||
yield Button("Donate")
|
||||
|
||||
yield VerticalScroll(id="history")
|
||||
|
||||
def on_button_pressed(self) -> None:
|
||||
self.add_donation()
|
||||
|
||||
def on_input_submitted(self) -> None:
|
||||
self.add_donation()
|
||||
|
||||
def add_donation(self) -> None:
|
||||
text_value = self.query_one(Input).value
|
||||
try:
|
||||
value = int(text_value)
|
||||
except ValueError:
|
||||
return
|
||||
self.query_one(ProgressBar).advance(value)
|
||||
self.query_one(VerticalScroll).mount(Label(f"Donation for ${value} received!"))
|
||||
self.query_one(Input).value = ""
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
FundingProgressApp().run()
|
||||
Reference in New Issue
Block a user