Maison >développement back-end >Tutoriel Python >Introduction minimale de Rio

Introduction minimale de Rio

Barbara Streisand
Barbara Streisandoriginal
2025-01-04 20:22:41466parcourir

Début novembre, j'ai vu une annonce de sortie pour Rio (https://rio.dev), une prochaine bibliothèque Python pour créer des interfaces utilisateur. J'ai des années d'expérience dans l'utilisation de Qt avec Python et je suis toujours intéressé à découvrir de nouvelles approches.

J'ai parcouru le tutoriel Tic Tac Toe et j'ai trouvé beaucoup de choses que j'ai aimé. J'ai d'abord été impressionné par la simplicité d'écriture d'interfaces à l'aide de classes de composants. L'interface s'exécute via un document HTML entièrement encapsulé par la bibliothèque. Cela offre de nombreuses possibilités sur comment et où les applications Rio sont exécutées. Rio inclut en option une application WebView autonome. Cependant, je n'ai pas vraiment aimé l'outil de ligne de commande rio inclus et la structure de projet initiale qu'il crée.

Je pense que Rio mérite un tutoriel plus léger qui supprime le passe-partout et les abstractions pour montrer le potentiel de cette bibliothèque. Commençons de rien et découvrons ce que Rio ressent en le construisant par nous-mêmes. J'ai trouvé que démarrer avec UV était aussi simple que je l'espérais.

uv init minirio --no-readme --no-pin-python --vcs none
cd minirio
uv add rio-ui[window]

La fonctionnalité facultative [window] installe les nombreuses dépendances nécessaires pour exécuter l'application autonome. Sachez également que je devais utiliser ==9.3 sous Windows en raison de versions pyside manquantes.

Utilisons le code minimal nécessaire pour créer cette application.

Minimal Rio Intro

import rio

class Greeting(rio.Component):
    name: str = 'World'
    def build(self):
        return rio.Row(
            rio.Icon('material/star', align_x=0.8, align_y=0.5),
            rio.Markdown(f'Hello, **{self.name}**', align_y=0.5),
        )

if __name__ == '__main__':
    app = rio.App(build=Greeting)
    app.run_in_window()

Il s'agit d'un script Python classique. Exécutez-le avec votre interpréteur python.

uv run hello.py

Un composant n'est guère plus qu'une méthode de construction qui renvoie un composant et un état défini sur la classe. Vous ne définissez pas __init__ ou tout autre passe-partout typique. Vous pouvez remplacer le run_in_window par un run_as_web_server et interagir avec cette application dans votre navigateur.

Il en faut très peu pour ajouter un peu d'interactivité. Voici un composant similaire qui ajoute une case à cocher et un style.

gradient = rio.LinearGradientFill(
    (rio.Color.RED, 0), (rio.Color.PINK, .3),
)

classe Greeting2 (rio.Component) :
    vérifié : bool = Faux

    def build(soi) :
        style = rio.TextStyle(fill=gradient) si self.checked else 'text'
        retourner rio.Row(
            rio.Checkbox(is_on=self.bind().checked),
            rio.Text('Les roses sont rouges.',>



<p>Cela utilise self.bind() pour créer une liaison bidirectionnelle entre l'état de la case à cocher et un attribut. Alternativement, il est simple d'attribuer l'argument on_change de la case à cocher à n'importe quelle méthode et de modifier les attributs de soi comme vous le souhaitez.</p>

<p><img src="https://img.php.cn/upload/article/000/000/000/173599336588947.jpg" alt="Minimal Rio Intro"></p>

<p>Trouvez des exemples et une documentation plus complètes sur le site Web du projet Rio. Personnellement, je ne suis pas encore prêt à quitter le monde de Qt et de Pyside, mais je pense aussi qu'il y a suffisamment de choses à surveiller à Rio.</p>
  • https://rio.dev/examples
  • https://rio.dev/docs
  • https://github.com/rio-labs/rio

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn