MarkdownViewer¶
Added in version 0.11.0
A Widget to display Markdown content with an optional Table of Contents.
- Focusable
- Container
Note
This Widget adds browser-like functionality on top of the Markdown widget.
Example¶
The following example displays Markdown from a string and a Table of Contents.
from textual.app import App, ComposeResult
from textual.widgets import MarkdownViewer
EXAMPLE_MARKDOWN = """\
# Markdown Viewer
This is an example of Textual's `MarkdownViewer` widget.
## Features
Markdown syntax and extensions are supported.
- Typography *emphasis*, **strong**, `inline code` etc.
- Headers
- Lists (bullet and ordered)
- Syntax highlighted code blocks
- Tables!
## Tables
Tables are displayed in a DataTable widget.
| 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 |
| `zebra_stripes` | `bool` | `False` | Display alternating colors on rows |
| `header_height` | `int` | `1` | Height of header row |
| `show_cursor` | `bool` | `True` | Show a cell cursor |
## Code Blocks
Code blocks are syntax highlighted, with guidelines.
```python
class ListViewExample(App):
def compose(self) -> ComposeResult:
yield ListView(
ListItem(Label("One")),
ListItem(Label("Two")),
ListItem(Label("Three")),
)
yield Footer()
```
"""
class MarkdownExampleApp(App):
def compose(self) -> ComposeResult:
yield MarkdownViewer(EXAMPLE_MARKDOWN, show_table_of_contents=True)
if __name__ == "__main__":
app = MarkdownExampleApp()
app.run()
Reactive Attributes¶
Name | Type | Default | Description |
---|---|---|---|
show_table_of_contents |
bool | True | Wether a Table of Contents should be displayed with the Markdown. |
Messages¶
This widget posts no messages.
Bindings¶
This widget has no bindings.
Component Classes¶
This widget has no component classes.
See Also¶
- Markdown code reference
textual.widgets.MarkdownViewer
class
¶
def __init__(
self,
markdown=None,
*,
show_table_of_contents=True,
name=None,
id=None,
classes=None,
parser_factory=None
):
Bases: VerticalScroll
A Markdown viewer widget.
Parameters
Name | Type | Description | Default |
---|---|---|---|
markdown |
str | None
|
String containing Markdown, or None to leave blank. |
None
|
show_table_of_contents |
bool
|
Show a table of contents in a sidebar. |
True
|
name |
str | None
|
The name of the widget. |
None
|
id |
str | None
|
The ID of the widget in the DOM. |
None
|
classes |
str | None
|
The CSS classes of the widget. |
None
|
parser_factory |
Callable[[], MarkdownIt] | None
|
A factory function to return a configured MarkdownIt instance. If |
None
|
table_of_contents
property
¶
The table of contents widget