11 月初旬に、ユーザー インターフェイスを作成するための今後の Python ライブラリである Rio (https://rio.dev) のリリース発表を見ました。私は Python で Qt を使用した長年の経験があり、常に新しいアプローチに興味を持っています。
Tic Tac Toe チュートリアルを実行して、気に入ったものをたくさん見つけました。私は最初、コンポーネント クラスを使用してインターフェイスを作成する単純さに感銘を受けました。インターフェイスは、ライブラリによって完全にカプセル化された HTML ドキュメントを通じて実行されます。これにより、Rio アプリケーションをどこでどのように実行するかについて多くの可能性が生まれます。 Rio には、スタンドアロン Webview アプリケーションがオプションで含まれています。しかし、私は含まれている rio コマンド ライン ツールと、それが作成する初期プロジェクト構造が非常に嫌いでした。
Rio は、このライブラリが持つ可能性を示すために、定型句や抽象化を取り除いた軽量のチュートリアルに値すると思います。何もないところから始めて、Rio が自分たちでそれを構築していく様子をどのように感じているかを発見してみましょう。 UV を始めるのは思ったほど簡単だったことがわかりました。
uv init minirio --no-readme --no-pin-python --vcs none cd minirio uv add rio-ui[window]
オプションの [ウィンドウ] 機能は、スタンドアロン アプリを実行するために必要な多くの依存関係をインストールします。また、pyside ビルドが欠落しているため、Windows では ==9.3 を使用する必要があることにも注意してください。
このアプリケーションの構築に必要な最小限のコードを使用してみましょう。
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()
これは通常の Python スクリプトです。 Python インタープリターを使用して実行します。
uv run hello.py
コンポーネントは、コンポーネントとクラスで定義された状態を返すビルド メソッドにすぎません。 __init__ やその他の一般的な定型文は定義しません。 run_in_window を run_as_web_server に置き換えて、ブラウザーでこのアプリケーションを操作できます。
インタラクティブ性を追加するのにほとんど時間がかかりません。以下は、チェックボックスとスタイルを追加する同様のコンポーネントです。
gradient = rio.LinearGradientFill( (rio.Color.RED, 0)、(rio.Color.PINK, .3)、 ) クラスGreeting2(rio.Component): チェック済み: ブール値 = False デフォルトビルド(自分自身): style = rio.TextStyle(fill=gradient) if self.checked else 'text' 戻り rio.Row( rio.Checkbox(is_on=self.bind().checked), rio.Text('バラは赤いです。',> <p>これは self.bind() を使用して、チェックボックスの状態と属性の間に双方向のバインディングを作成しています。あるいは、チェックボックスの on_change 引数を任意のメソッドに割り当て、必要に応じて self の属性を変更することも簡単です。</p> <p><img src="https://img.php.cn/upload/article/000/000/000/173599336588947.jpg" alt="Minimal Rio Intro"></p> <p>Rio プロジェクトの Web サイトで、より完全な例とドキュメントを見つけてください。個人的には、私はまだ Qt と Pyside の世界を離れる準備ができていませんが、Rio には注目すべきものが十分にあるとも思っています。</p>
以上がミニマルリオイントロの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。