-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
39 lines (30 loc) · 964 Bytes
/
main.py
File metadata and controls
39 lines (30 loc) · 964 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from viewforge.core import App
from viewforge.core.registry import handler
from viewforge.state.signal import Signal
from viewforge.components.text import Text
from viewforge.components.layout import Stack
from viewforge.components.buttons import ShoelaceButton
# Reactive state
count = Signal(0)
# Handlers (must be registered)
@handler(name='increment')
def increment():
count.set(count() + 1)
print(count())
@handler(name='decrement')
def decrement():
count.set(count() - 1)
print(count())
# UI layout
def build():
return Stack([
Text("🔢 Shoelace Counter", css={"font_size": "1.5rem", "margin_bottom": "1rem"}),
Text(count),
Stack([
ShoelaceButton("➕ Increment", on_click=increment),
ShoelaceButton("➖ Decrement", on_click=decrement)
], css={"gap": "1rem"})
], css={"padding": "2rem", "gap": "1rem"})
# Run app
if __name__ == "__main__":
App().run(build, True)