Reactive user interfaces
Project description
Collagraph 📓
Reactive user interfaces.
The word Collagraphy is derived from the Greek word koll or kolla, meaning glue, and graph, meaning the activity of drawing.
Inspired by Vue and React.
Features
Write your Python interfaces in a declarative manner with plain render functions, component classes or even single-file components using Vue-like syntax, but with Python!
- Reactivity (made possible by leveraging observ)
- Function components
- Class components with local state and life-cycle methods/hooks
- Single-file components with Vue-like syntax (
.cgxfiles) - Custom renderers
Here is an example that shows a simple counter, made with a function component:
from PySide6 import QtWidgets
from observ import reactive
import collagraph as cg
# Declare some reactive state
state = reactive({"count": 0})
# Define function that adjusts the state
def bump():
state["count"] += 1
# Declare how the state should be rendered
def Counter(props):
return cg.h(
"widget",
{},
cg.h("label", {"text": f"Count: {props['count']}"}),
cg.h("button", {"text": "Bump", "on_clicked": bump}),
)
# Create a Collagraph instance with a PySide renderer
# and register with the Qt event loop
gui = cg.Collagraph(
renderer=cg.PySideRenderer(),
event_loop_type=cg.EventLoopType.QT,
)
# Render the function component into a container
# (in this case the app but can be another widget)
app = QtWidgets.QApplication()
gui.render(cg.h(Counter, state), app)
app.exec()
For more examples, please take a look at the examples folder.
Currently there are two renderers:
- PysideRenderer: for rendering PySide6 applications
- PygfxRenderer: for rendering 3D graphic scenes with Pygfx
It is possible to create a custom Renderer using the Renderer interface, to render to other UI frameworks, for instance wxPython, or even the browser DOM.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file collagraph-0.5.1.tar.gz.
File metadata
- Download URL: collagraph-0.5.1.tar.gz
- Upload date:
- Size: 30.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7dbd212c43833f687179a80fc7bace0ffa606e298fa2637e8a7406cf7a36190b
|
|
| MD5 |
77f72a91b49bb347ac98542f0fa2016d
|
|
| BLAKE2b-256 |
b980fb5ac36f9191f60ae856bb588bb049eb74db5f6e9b2c0d7b6e9f2bdb13b9
|
File details
Details for the file collagraph-0.5.1-py3-none-any.whl.
File metadata
- Download URL: collagraph-0.5.1-py3-none-any.whl
- Upload date:
- Size: 38.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ab8485736543adf4757ae848c60486042a7532959ba0a8dcd4f4ea474e26d9f
|
|
| MD5 |
89bb83a1852b8660b3b0450cc1684f58
|
|
| BLAKE2b-256 |
65da437144dd398eee4828f606ed67e6b387a66122e4657d8dd9a47547117ba2
|