Files

63 lines
1.7 KiB
Python

from textual import events
from textual.app import App
from textual.containers import Container
from textual.widgets import Static
class ClickableColorBlock(Static):
background_toggled = False
raw_background = ""
def on_mount(self):
self.styles.border = ("heavy", "white")
self.raw_background = self.styles.background
def on_click(self, event: events.Click):
event.prevent_default()
self.background_toggled = not self.background_toggled
self.styles.background = (
str(self.render()) if self.background_toggled else self.raw_background
)
self.log("block background changed!")
class DisplayApp(App):
CSS_PATH = "css/events.css"
background_toggled = False
def compose(self):
yield Container(
ClickableColorBlock("red", classes="block"),
ClickableColorBlock("blue", classes="block"),
ClickableColorBlock("green", classes="block"),
ClickableColorBlock("cyan", classes="block"),
id="display-container",
)
def on_click(self):
self.background_toggled = not self.background_toggled
target = self.query_one("#display-container")
blocks = target.query(".block")
background = None
border = None
if self.background_toggled:
background = "white"
border = ("heavy", "black")
else:
background = "grey"
border = ("heavy", "white")
target.styles.background = background
for block in blocks:
block.styles.border = border
self.log("container background changed!")
if __name__ == '__main__':
app = DisplayApp()
app.run()