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.
- 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
, andrio.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
# 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()
Rio is available on PyPI, so you can install it using pip:
pip install rio-ui
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!
Rio is still in development. We're working hard to bring you the best possible experience. If you have any feedback, please let us know on our Discord server.
For general help using Rio, please refer to the official Rio documentation. For additional help, you can use one of these channels to ask a question:
- Discord (For live discussion with the Community and Rio team)
- GitHub (Bug reports, Contributions)
- Community Forum (Questions and Discussions)