Comments (1)
Hi,
It seems that variables are Widget scoped. We can define variables for the whole App.
Here is a little dirty hack I wrote to be able to have shared variables for the whole app:
import os
from pathlib import Path
from textual.app import App
from textual.css.parse import substitute_references
from textual.css.tokenize import tokenize, tokenize_values
class MyApp(App):
def get_css_variables(self) -> dict[str, str]:
"""
Dirty hack to add shared variables for the whole app
"""
variables = super().get_css_variables()
last_t = None
current_variable_name = None
css_path = os.path.dirname(os.path.realpath(__file__)) + "/tcss/variables.tcss"
css_content = Path(css_path).read_text()
variable_tokens = tokenize_values(variables)
tokens = iter(substitute_references(tokenize(css_content, (css_path, None)), variable_tokens))
for t in tokens:
if not t:
continue
elif t.name == "variable_name":
current_variable_name = t.value[1:-1]
elif t.name == "variable_value_end":
variables[current_variable_name] = last_t.value
last_t = t
return variables
If it can be usefull for someone...
from textual.
Related Issues (20)
- ScrollView/RichLog: Page Up / Page Down off by one with horizontal scrollbar HOT 4
- Document can_focus
- Reduce Textual test suite runtime HOT 5
- Flaky test: test_tracked_slugs HOT 4
- Add sorting to command palette HOT 2
- Clearing and adding data to `DataTable` without worker will cause it to sometime not display its content. HOT 8
- Extra space when saved to SVG HOT 3
- Issues with new Footer HOT 18
- default_cell_formatter() in DataTable formats float to 2-digit scale, which is often undesirable. HOT 1
- Document Suggester in Input HOT 3
- `TextArea` with indent tab behaviour won't minimize on `esc` key HOT 3
- Document key identifier format
- Check consume key doesn't cover everything HOT 1
- Make "escape to dismiss" optional for maximised widgets HOT 2
- Unable to switch tabs in TabbedContent using a key binding HOT 12
- `AssertionError` when updating `ListView` in a worker HOT 3
- `clear_panes` and memory leak HOT 3
- Button label not centered when buttons are in nested horizontals HOT 3
- Width of buttons is not even using fr HOT 7
- Tutorial does not work in Warp terminal HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from textual.