Skip to main content

No project description provided

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

$ pip install pyiced

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,
            ]),
            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()

TODOs

  • ButtonStyle != ButtonStyleSheet
  • Add examples for every widget
  • Add a bigger example with network access, e.g. a two player game
  • Implement Canvas
  • Implement PaneGrid
  • Add PEP 561 typing information
  • Better documentation
  • Test on MacOS
  • Get to compile for musl wheels

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.0a2.tar.gz (110.2 kB view hashes)

Uploaded Source

Built Distributions

pyiced-0.3.0a2-cp310-cp310-win_amd64.whl (3.3 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

pyiced-0.3.0a2-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.0a2-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.0a2-cp39-cp39-win_amd64.whl (3.3 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

pyiced-0.3.0a2-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.0a2-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.0a2-cp38-cp38-win_amd64.whl (3.3 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

pyiced-0.3.0a2-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.0a2-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.0a2-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.0a2-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