Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyscript-ltk-0.1.1.tar.gz (15.9 kB view hashes)

Uploaded Source

Built Distribution

pyscript_ltk-0.1.1-py3-none-any.whl (14.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page