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中文网其他相关文章!