Skip to main content

Build modern Websites and Apps just with Python

Project description

Rio Readme 4

Rio is an easy to use framework for creating websites and apps and is based entirely on Python. 🐍
You won't need a single line of HTML, CSS, or JavaScript to create beautiful, modern apps.

Tutorial - Examples - Discord - Docs - Source Code

Rio brings React-style components to Python. Pull from a wealth of built-in components and combine them to create your own custom components. Then combine those into entire apps. Best of all, Rio apps can run both locally on your machine and on the web.

Rio Version Python Version License GitHub Stars Downloads

Image Generation Example

Features 🧩

  • Modern, declarative UI framework
  • 100% Python - Zero HTML, CSS, or JavaScript required
  • Over 50 Built-in components for common UI elements, such as rio.Switch, rio.Button, and rio.Text, and many more
  • Integrates with modern Python tooling: Thanks to being entirely Type Safe editors can give you instant suggestions and highlight problems right away
  • Apps can run both locally and on the web
  • Dev tools included
  • Open Source & Free forever

Example ⌨️

# Define a component that counts button clicks
class ButtonClicker(rio.Component):
    # Define the attributes of the component. Rio will watch these
    # for changes and automatically update the GUI.
    clicks: int = 0

    # Define a method that increments the click count. We'll later
    # make a button that calls this method whenever it is pressed.
    def _on_press(self) -> None:
        self.clicks += 1

    # Define the `build` method. This method essentially tells rio
    # what a ButtonClicker component looks like. Whenever the state
    # of the ButtonClicker component changes, rio will call its
    # `build` method and update the GUI according to the output.
    def build(self) -> rio.Component:
        return rio.Column(
            rio.Button('Click me', on_press=self._on_press),
            rio.Text(f'You clicked the button {self.clicks} time(s)'),
        )

# Create an App and tell it to display a ButtonClicker when it starts
app = rio.App(build=ButtonClicker)
app.run_in_browser()  # Or `app.run_in_window()` to run as local app!

Installation 🛠️

Rio is available on PyPI, so you can install it using pip:

pip install rio-ui

Getting Started 🎓

Rio comes with a very helpful command line utility to help you out. Create a new project in one short command:

rio new

You can choose from a variety of built-in templates to get you started. Here's a complete example to create a project based on the tic-tac-toe template:

rio new my-project --type website --template "Tic-Tac-Toe"
cd my-project
rio run

You'll have your first app up and running in seconds!

Status: Beta 🚧

Rio is rapidly approaching its first stable release. Version 0.10 incorporates all planned breaking changes. Minor changes may still occur, but we are actively trying to avoid them.

If you encounter any issues or would like to provide feedback, please let us know on our Discord server.

1.0 is expected later this year.

Contributing 🤝

Every project thrives with a helping hand, and that's especially true for Rio. There are lots of ways to jump in, like adding new features, fixing bugs, or just sharing your ideas. Check out our Contributing Guide when submitting a Pull Request to the project. Rio keeps getting better with new features rolling out every week. Star ⭐ and 👀 watch this repo to stay in the loop!

Unless you explicitly state otherwise, any contribution submitted for inclusion in Rio shall be licensed under the terms of the Apache-2.0 license, without any additional terms or conditions.

Community Support 🫶

Join the Rio adventure and be part of an awesome fellowship! Here is how to get in touch:

  • Discord (Level up your Rio skills! Join our Discord server to chat with other developers and discuss how to contribute.)
  • GitHub (Spot a bug? Issues are the perfect place to let us know. Feeling super-helpful? Try fixing an existing issue and submit a PR!)
  • Community Forum (Join our community forum on Github for asking questions and discussions)
  • Feature Requests (Cleanest way to request a feature on GitHub)

For general help using Rio, please refer to the official Rio documentation.

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

rio_ui-0.10.8.tar.gz (2.8 MB view details)

Uploaded Source

Built Distribution

rio_ui-0.10.8-py3-none-any.whl (2.8 MB view details)

Uploaded Python 3

File details

Details for the file rio_ui-0.10.8.tar.gz.

File metadata

  • Download URL: rio_ui-0.10.8.tar.gz
  • Upload date:
  • Size: 2.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.2

File hashes

Hashes for rio_ui-0.10.8.tar.gz
Algorithm Hash digest
SHA256 81604377156956c063d635b6f128f484a2d05a0cf23c3d2a90af79a705434ed2
MD5 c36af37c5e80fb0236ebd65e126625fc
BLAKE2b-256 0dbea686353fd592731936783f376e21ba472f62163c06a7f86deba5f4f6bfc5

See more details on using hashes here.

File details

Details for the file rio_ui-0.10.8-py3-none-any.whl.

File metadata

  • Download URL: rio_ui-0.10.8-py3-none-any.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.2

File hashes

Hashes for rio_ui-0.10.8-py3-none-any.whl
Algorithm Hash digest
SHA256 3ef362a9567126594e5ddebf987ca4723f8e33a93138527d57c978e535e5a9b2
MD5 a9687205177ce52b6098c22f0a3d156a
BLAKE2b-256 fd7390038b5a4096b15c01b2fbca05160be8425791b7ee083c129b60ff86059c

See more details on using hashes here.

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