Files
textual/docs/examples/widgets/markdown.py
2025-06-20 12:56:13 +01:00

62 lines
1.6 KiB
Python

from textual.app import App, ComposeResult
from textual.widgets import Markdown
EXAMPLE_MARKDOWN = """\
## Markdown
- Typography *emphasis*, **strong**, `inline code` etc.
- Headers
- Lists
- Syntax highlighted code blocks
- Tables and more
## Quotes
> I must not fear.
> > Fear is the mind-killer.
> > Fear is the little-death that brings total obliteration.
> > I will face my fear.
> > > I will permit it to pass over me and through me.
> > > And when it has gone past, I will turn the inner eye to see its path.
> > > Where the fear has gone there will be nothing. Only I will remain.
## Tables
| Name | Type | Default | Description |
| --------------- | ------ | ------- | ---------------------------------- |
| `show_header` | `bool` | `True` | Show the table header |
| `fixed_rows` | `int` | `0` | Number of fixed rows |
| `fixed_columns` | `int` | `0` | Number of fixed columns |
## Code blocks
```python
def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
\"\"\"Iterate and generate a tuple with a flag for last value.\"\"\"
iter_values = iter(values)
try:
previous_value = next(iter_values)
except StopIteration:
return
for value in iter_values:
yield False, previous_value
previous_value = value
yield True, previous_value
```
"""
class MarkdownExampleApp(App):
def compose(self) -> ComposeResult:
markdown = Markdown(EXAMPLE_MARKDOWN)
markdown.code_indent_guides = False
yield markdown
if __name__ == "__main__":
app = MarkdownExampleApp()
app.run()