Skip to main content

Bindings for Iced, a cross-platform GUI library focused on simplicity. Inspired by Elm.

Project description

GitHub Workflow Status Documentation Status PyPI PyPI - Python Version OS - Windows | Linux License

Python bindings for Iced.

Iced is a cross-platform GUI library focused on simplicity and type-safety. Inspired by Elm.

Installation

Precompiled wheel:

$ pip install pyiced

From source:

$ pip install .

To install from source you need to have a recent version of Rust installed in your $PATH.

Rustup is probably the most easy to use option to install and update Rust on your system.

Quick Example

from pyiced import (
    Align, button, ButtonState, column, container, IcedApp, Length, text,
)


class ExampleApp(IcedApp):
    def __init__(self):
        self.__incr_button_state = ButtonState()
        self.__decr_button_state = ButtonState()
        self.__value = 0

    def title(self):
        return 'Counter'

    def view(self):
        increment_button = button(
            self.__incr_button_state,  # To track the state across redraws.
            text('Increment'),         # This is content on the button.
            on_press='incr',           # This value is received in update().
        )
        value_label = text(f'{self.__value}', size=50)
        decrement_button = button(
            self.__decr_button_state,
            text('Decrement'),
            on_press='decr',
        )
        return container(
            column(
                [increment_button, value_label, decrement_button],
                align_items=Align.CENTER,
            ),
            padding=20, align_x=Align.CENTER, align_y=Align.CENTER,
            width=Length.FILL, height=Length.FILL,
        )

    def update(self, msg, clipboard):
        # When an event occurs, this method is called.
        # It can optionally return a list of async functions,
        # to handle the event.
        match msg:
            case 'incr':
                self.__value += 1
            case 'decr':
                self.__value -= 1


if __name__ == '__main__':
    # This function only returns if there is an error on start-up.
    # Otherwise the program gets terminated when the window is closed.
    ExampleApp().run()

Bigger Example

Please find the source code in examples/chess.py.

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

pyiced-0.3.0a4.tar.gz (66.7 kB view hashes)

Uploaded Source

Built Distributions

pyiced-0.3.0a4-cp310-cp310-musllinux_1_1_x86_64.whl (5.6 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pyiced-0.3.0a4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyiced-0.3.0a4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (5.4 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

pyiced-0.3.0a4-cp39-cp39-musllinux_1_1_x86_64.whl (5.6 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pyiced-0.3.0a4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyiced-0.3.0a4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (5.4 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

pyiced-0.3.0a4-cp38-cp38-musllinux_1_1_x86_64.whl (5.6 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

pyiced-0.3.0a4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyiced-0.3.0a4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (5.4 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

pyiced-0.3.0a4-cp37-cp37m-musllinux_1_1_x86_64.whl (5.6 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

pyiced-0.3.0a4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

pyiced-0.3.0a4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (5.4 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

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