A little toolkit for writing UIs in PyScript
Project description
ltk
LTK is a little toolkit for writing UIs in PyScript
LTK is implemented as a declarative Python library and leverages jQuery
for DOM operations.
Widget Specification
New widget types are created by symply subclassing ltk.Widget
:
class HBox(Widget):
classes = [ "ltk-hbox" ]
By default, widgets are created as div
DOM elements. You can choose a different tag:
class Preformatted(Widget):
classes = [ "ltk-pre" ]
tag = "pre"
Creating a UI
To create a UI, elements are constructed declaratively:
ltk.Table(
ltk.TableRow(
ltk.TableHeader("header1")
ltk.TableHeader("header2")
),
[
ltk.TableRow(
ltk.TableData(value1),
ltk.TableData(value2),
)
for value1, value2 in data
],
)
Widgets are added to others by using jQuery's append
and appendTo
calls:
ltk.body.append(
ltk.Table(...)
)
container = ltk.VBox(...)
ltk.H1("This is a header").appendTo(container)
Styling
Widgets can be styled using element styles:
ltk.Text("Some text")
.css("background-color", "red")
.css("color", "white")
.css("padding", 8)
Widgets can also be styled using an external stylesheet:
ltk.Text("Some text").addClass("my-special-text)
.ltk-text {
font-family: Arial;
}
.my-special-text {
font-family: Courier;
background-color: red;
color: white;
padding: 8px;
}
Events
Event handlers are attached using jQuery mechanisms. As the functions cross PyOdide and JavaScript namespaces, they need to be wrapped with pyodide.ffi.create_proxy
calls. We use the shortcut offered by ltk.proxy
:
def buy(event):
purchase(...)
Card("Buy Now").on("click", ltk.proxy(buy))
Examples
See the LTK Kitchen Sink
or explore the examples
folder
License
LTK is covered under the Apache License:
-
The Apache license is a permissive open source software license.
-
It allows users to freely use, modify, and distribute the software (including for commercial purposes).
-
Modified versions can be distributed without having to release the source code. Though source code changes should be documented.
-
The license requires modified versions to retain the Apache license and copyright notice.
-
The software is provided by the authors "as is" with no warranties.
-
Users are not granted patent rights by contributors, but contributors cannot revoke patent grants for previous contributions.
-
The license does not require derived works to adopt the Apache license. Though this is encouraged for consistency.
Upload new version to PyPi
First build the package into a source distribution and a Python wheel:
python3 -m pip install --user --upgrade setuptools wheel twine build
python3 -m build
Then verify whether the build works for pypi:
twine check dist/*
Then upload to the pypi test environment:
twine upload --repository pypitest dist/*
Finally, if the pypi test upload appears to work fine, run:
twine upload dist/*
License
Microlog is released under version 1 of the Server Side Public License (SSPL).
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
Hashes for pyscript_ltk-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c7ee65cd2b599a968f3ace78041e886c9a16980316798c0ff291328837d7d2d |
|
MD5 | d212bc8863ae0e7bf5043d83d6e147c2 |
|
BLAKE2b-256 | f495738a0f8050ccf13eb23895dfb4669b6ea94d5ea6b71f8a480ca69776d54d |