mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Applying styles to button
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
#foo {
|
||||||
|
text-style: underline;
|
||||||
|
background: rebeccapurple;
|
||||||
|
}
|
||||||
|
|
||||||
|
#foo:hover {
|
||||||
|
background: greenyellow;
|
||||||
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class ButtonsApp(App[str]):
|
|||||||
self.exit(event.button.id)
|
self.exit(event.button.id)
|
||||||
|
|
||||||
|
|
||||||
app = ButtonsApp(log_path="textual.log", log_verbosity=2)
|
app = ButtonsApp(log_path="textual.log", css_path="buttons.css", log_verbosity=2)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
result = app.run()
|
result = app.run()
|
||||||
|
|||||||
@@ -464,7 +464,6 @@ class Widget(DOMNode):
|
|||||||
Returns:
|
Returns:
|
||||||
RenderableType: A new renderable.
|
RenderableType: A new renderable.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
renderable = self.render(self.styles.rich_style)
|
renderable = self.render(self.styles.rich_style)
|
||||||
|
|
||||||
styles = self.styles
|
styles = self.styles
|
||||||
@@ -478,13 +477,13 @@ class Widget(DOMNode):
|
|||||||
horizontal, vertical = content_align
|
horizontal, vertical = content_align
|
||||||
renderable = Align(renderable, horizontal, vertical=vertical)
|
renderable = Align(renderable, horizontal, vertical=vertical)
|
||||||
|
|
||||||
|
renderable = Padding(renderable, styles.padding)
|
||||||
|
|
||||||
renderable_text_style = parent_text_style + text_style
|
renderable_text_style = parent_text_style + text_style
|
||||||
if renderable_text_style:
|
if renderable_text_style:
|
||||||
style = Style.from_color(text_style.color, text_style.bgcolor)
|
style = Style.from_color(text_style.color, text_style.bgcolor)
|
||||||
renderable = Styled(renderable, style)
|
renderable = Styled(renderable, style)
|
||||||
|
|
||||||
renderable = Padding(renderable, styles.padding)
|
|
||||||
|
|
||||||
if styles.border:
|
if styles.border:
|
||||||
renderable = Border(
|
renderable = Border(
|
||||||
renderable,
|
renderable,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from typing import cast
|
|||||||
|
|
||||||
from rich.console import RenderableType
|
from rich.console import RenderableType
|
||||||
from rich.style import Style
|
from rich.style import Style
|
||||||
from rich.text import Text
|
from rich.text import Text, TextType
|
||||||
|
|
||||||
from .. import events
|
from .. import events
|
||||||
from ..message import Message
|
from ..message import Message
|
||||||
@@ -49,7 +49,7 @@ class Button(Widget, can_focus=True):
|
|||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
label: RenderableType | None = None,
|
label: TextType | None = None,
|
||||||
disabled: bool = False,
|
disabled: bool = False,
|
||||||
*,
|
*,
|
||||||
name: str | None = None,
|
name: str | None = None,
|
||||||
@@ -58,7 +58,11 @@ class Button(Widget, can_focus=True):
|
|||||||
):
|
):
|
||||||
super().__init__(name=name, id=id, classes=classes)
|
super().__init__(name=name, id=id, classes=classes)
|
||||||
|
|
||||||
self.label = self.css_identifier_styled if label is None else label
|
if label is None:
|
||||||
|
label = self.css_identifier_styled
|
||||||
|
|
||||||
|
self.label: Text = self.validate_label(label)
|
||||||
|
|
||||||
self.disabled = disabled
|
self.disabled = disabled
|
||||||
if disabled:
|
if disabled:
|
||||||
self.add_class("-disabled")
|
self.add_class("-disabled")
|
||||||
@@ -72,7 +76,7 @@ class Button(Widget, can_focus=True):
|
|||||||
return label
|
return label
|
||||||
|
|
||||||
def render(self, style: Style) -> RenderableType:
|
def render(self, style: Style) -> RenderableType:
|
||||||
return self.label
|
return Text.styled(self.label.plain, style)
|
||||||
|
|
||||||
async def on_click(self, event: events.Click) -> None:
|
async def on_click(self, event: events.Click) -> None:
|
||||||
event.stop()
|
event.stop()
|
||||||
|
|||||||
Reference in New Issue
Block a user