11 月初,我看到了 Rio (https://rio.dev) 的發佈公告,這是一個即將推出的用於創建用戶界面的 Python 庫。我擁有多年使用 Qt 和 Python 的經驗,並且總是對新方法感興趣。
我瀏覽了井字遊戲教學並發現了很多我喜歡的東西。最初,使用元件類別編寫介面的簡單性給我留下了深刻的印象。該介面透過一個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]
可選的[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 並在瀏覽器中與此應用程式互動。
加入一些互動性只需很少的時間。這是一個類似的元件,添加了複選框和樣式。
漸層 = rio.LinearGradientFill( (rio.Color.RED, 0), (rio.Color.PINK, .3), ) 類別 Greeting2(rio.Component): 檢查:布爾=假 def 建置(自身): 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 專案網站上尋找更完整的範例和文件。就我個人而言,我還沒有準備好離開 Qt 和 Pyside 的世界,但我也認為 Rio 有足夠多的東西值得關注。 </p>
以上是最小裡約簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!