mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
moar docs
This commit is contained in:
@@ -17,4 +17,5 @@ class ButtonApp(App):
|
|||||||
|
|
||||||
def handle_pressed(self, event):
|
def handle_pressed(self, event):
|
||||||
self.dark = not self.dark
|
self.dark = not self.dark
|
||||||
|
self.bell()
|
||||||
event.button.label = "Lights ON" if self.dark else "Lights OFF"
|
event.button.label = "Lights ON" if self.dark else "Lights OFF"
|
||||||
|
|||||||
9
docs/examples/styles/README.md
Normal file
9
docs/examples/styles/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
These are the examples from the documentation, used to generate screenshots.
|
||||||
|
|
||||||
|
You can run them with the textual CLI.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
textual run text_style.py
|
||||||
|
```
|
||||||
@@ -4,6 +4,9 @@ from textual.widgets import Static
|
|||||||
|
|
||||||
class BorderApp(App):
|
class BorderApp(App):
|
||||||
CSS = """
|
CSS = """
|
||||||
|
Screen {
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
Screen > Static {
|
Screen > Static {
|
||||||
height:5;
|
height:5;
|
||||||
content-align: center middle;
|
content-align: center middle;
|
||||||
@@ -13,14 +16,18 @@ class BorderApp(App):
|
|||||||
}
|
}
|
||||||
#static1 {
|
#static1 {
|
||||||
background: red 20%;
|
background: red 20%;
|
||||||
|
color: red;
|
||||||
border: solid red;
|
border: solid red;
|
||||||
}
|
}
|
||||||
#static2 {
|
#static2 {
|
||||||
background: green 20%;
|
background: green 20%;
|
||||||
|
color: green;
|
||||||
border: dashed green;
|
border: dashed green;
|
||||||
|
|
||||||
}
|
}
|
||||||
#static3 {
|
#static3 {
|
||||||
background: blue 20%;
|
background: blue 20%;
|
||||||
|
color: blue;
|
||||||
border: tall blue;
|
border: tall blue;
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -13,9 +13,15 @@ Where the fear has gone there will be nothing. Only I will remain."""
|
|||||||
class MarginApp(App):
|
class MarginApp(App):
|
||||||
CSS = """
|
CSS = """
|
||||||
|
|
||||||
|
Screen {
|
||||||
|
background: white;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
Static {
|
Static {
|
||||||
margin: 4 8;
|
margin: 4 8;
|
||||||
background: blue 20%;
|
background: blue 20%;
|
||||||
|
border: blue wide;
|
||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|||||||
44
docs/examples/styles/overflow.py
Normal file
44
docs/examples/styles/overflow.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
from textual.app import App
|
||||||
|
from textual.widgets import Static
|
||||||
|
from textual.layout import Horizontal, Vertical
|
||||||
|
|
||||||
|
TEXT = """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."""
|
||||||
|
|
||||||
|
|
||||||
|
class OverflowApp(App):
|
||||||
|
CSS = """
|
||||||
|
Screen {
|
||||||
|
background: $background;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vertical {
|
||||||
|
width: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
Static {
|
||||||
|
margin: 1 2;
|
||||||
|
background: blue 20%;
|
||||||
|
border: blue wide;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#right {
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def compose(self):
|
||||||
|
yield Horizontal(
|
||||||
|
Vertical(Static(TEXT), Static(TEXT), Static(TEXT), id="left"),
|
||||||
|
Vertical(Static(TEXT), Static(TEXT), Static(TEXT), id="right"),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
app = OverflowApp()
|
||||||
@@ -13,6 +13,11 @@ Where the fear has gone there will be nothing. Only I will remain."""
|
|||||||
class PaddingApp(App):
|
class PaddingApp(App):
|
||||||
CSS = """
|
CSS = """
|
||||||
|
|
||||||
|
Screen {
|
||||||
|
background: white;
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
|
|
||||||
Static {
|
Static {
|
||||||
padding: 4 8;
|
padding: 4 8;
|
||||||
background: blue 20%;
|
background: blue 20%;
|
||||||
|
|||||||
25
docs/styles/max_height.md
Normal file
25
docs/styles/max_height.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Max-height
|
||||||
|
|
||||||
|
The `max-height` rule sets a maximum width for a widget.
|
||||||
|
|
||||||
|
## CSS
|
||||||
|
|
||||||
|
```sass
|
||||||
|
|
||||||
|
/* Set a maximum height of 10 rows */
|
||||||
|
max-height: 10;
|
||||||
|
|
||||||
|
/* Set a maximum height of 25% of the screen height */
|
||||||
|
max-height: 25vh;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Python
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Set the maximum width to 10 rows
|
||||||
|
widget.styles.max_height = 10
|
||||||
|
|
||||||
|
# Set the maximum width to 25% of the screen width
|
||||||
|
widget.styles.max_height = "25vw"
|
||||||
|
|
||||||
|
```
|
||||||
25
docs/styles/max_width.md
Normal file
25
docs/styles/max_width.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Max-width
|
||||||
|
|
||||||
|
The `max-width` rule sets a maximum width for a widget.
|
||||||
|
|
||||||
|
## CSS
|
||||||
|
|
||||||
|
```sass
|
||||||
|
|
||||||
|
/* Set a maximum width of 10 cells */
|
||||||
|
max-width: 10;
|
||||||
|
|
||||||
|
/* Set a maximum width of 25% of the screen width */
|
||||||
|
max-width: 25vh;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Python
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Set the maximum width to 10 cells
|
||||||
|
widget.styles.max_width = 10
|
||||||
|
|
||||||
|
# Set the maximum width to 25% of the screen width
|
||||||
|
widget.styles.max_width = "25vw"
|
||||||
|
|
||||||
|
```
|
||||||
25
docs/styles/min_height.md
Normal file
25
docs/styles/min_height.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Min-height
|
||||||
|
|
||||||
|
The `min-height` rule sets a minimum height for a widget.
|
||||||
|
|
||||||
|
## CSS
|
||||||
|
|
||||||
|
```sass
|
||||||
|
|
||||||
|
/* Set a minimum height of 10 rows */
|
||||||
|
min-height: 10;
|
||||||
|
|
||||||
|
/* Set a minimum height of 25% of the screen height */
|
||||||
|
min-height: 25vh;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Python
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Set the minimum height to 10 rows
|
||||||
|
self.styles.min_height = 10
|
||||||
|
|
||||||
|
# Set the minimum height to 25% of the screen height
|
||||||
|
self.styles.min_height = "25vh"
|
||||||
|
|
||||||
|
```
|
||||||
25
docs/styles/min_width.md
Normal file
25
docs/styles/min_width.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Min-width
|
||||||
|
|
||||||
|
The `min-width` rules sets a minimum width for a widget.
|
||||||
|
|
||||||
|
## CSS
|
||||||
|
|
||||||
|
```sass
|
||||||
|
|
||||||
|
/* Set a minimum width of 10 cells */
|
||||||
|
min-width: 10;
|
||||||
|
|
||||||
|
/* Set a minimum width of 25% of the screen width */
|
||||||
|
min-width: 25vh;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Python
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Set the minimum width to 10 cells
|
||||||
|
widget.styles.min_width = 10
|
||||||
|
|
||||||
|
# Set the minimum width to 25% of the screen height
|
||||||
|
widget.styles.min_width = "25vh"
|
||||||
|
|
||||||
|
```
|
||||||
50
docs/styles/overflow.md
Normal file
50
docs/styles/overflow.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Overflow
|
||||||
|
|
||||||
|
The `overflow` rule specifies if and when scrollbars should be displayed on the `x` and `y` axis. There are two values for each scrollbar, which may be set together or independently to one of the follow three values:
|
||||||
|
|
||||||
|
- `"auto"` Automatically show the scrollbar if the content doesn't fit
|
||||||
|
- `"hidden"` Never show the scrollbar
|
||||||
|
- `"scroll"` Always show the scrollbar
|
||||||
|
|
||||||
|
The default is "auto" which will show the scrollbar if content doesn't fit within container, otherwise the scrollbar will be hidden.
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
Here we split the screen in to left and right sections, each with three vertically scrolling widgets that do not fit in to the height of the terminal.
|
||||||
|
|
||||||
|
The left side has `overflow-y: auto` (the default) and will automatically show a scrollbar. The right side has `overflow-y: hidden` which will prevent a scrollbar from being show.
|
||||||
|
|
||||||
|
=== "width.py"
|
||||||
|
|
||||||
|
```python
|
||||||
|
--8<-- "docs/examples/styles/overflow.py"
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "Output"
|
||||||
|
|
||||||
|
```{.textual path="docs/examples/styles/overflow.py"}
|
||||||
|
```
|
||||||
|
|
||||||
|
## CSS
|
||||||
|
|
||||||
|
```sass
|
||||||
|
/* Automatic scrollbars on both axies (the default) */
|
||||||
|
overflow: auto auto;
|
||||||
|
|
||||||
|
/* Hide the vertical scrollbar */
|
||||||
|
overflow-y: hidden;
|
||||||
|
|
||||||
|
/* Always show the horizontal scrollbar */
|
||||||
|
overflow-x: scroll;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Python
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Hide the vertical scrollbar
|
||||||
|
self.styles.overflow_y = "hidden"
|
||||||
|
|
||||||
|
# Always show the horizontal scrollbar
|
||||||
|
self.styles.overflow_x = "scroll"
|
||||||
|
|
||||||
|
```
|
||||||
@@ -14,8 +14,13 @@ nav:
|
|||||||
- "styles/background.md"
|
- "styles/background.md"
|
||||||
- "styles/color.md"
|
- "styles/color.md"
|
||||||
- "styles/display.md"
|
- "styles/display.md"
|
||||||
|
- "styles/min_height.md"
|
||||||
|
- "styles/max_height.md"
|
||||||
|
- "styles/min_width.md"
|
||||||
|
- "styles/max_width.md"
|
||||||
- "styles/height.md"
|
- "styles/height.md"
|
||||||
- "styles/margin.md"
|
- "styles/margin.md"
|
||||||
|
- "styles/overflow.md"
|
||||||
- "styles/padding.md"
|
- "styles/padding.md"
|
||||||
- "styles/text_style.md"
|
- "styles/text_style.md"
|
||||||
- "styles/visibility.md"
|
- "styles/visibility.md"
|
||||||
|
|||||||
Reference in New Issue
Block a user