NiceGUI 简介#

NiceGUI 是开源的 Python 库,用于编写在浏览器中运行的图形用户界面。它具有非常平缓的学习曲线,同时仍提供高级定制选项。NiceGUI 遵循后端优先的理念:它处理所有 web 开发细节。您可以专注于编写 Python 代码。这使得它非常适合各种项目,包括短脚本、仪表板、机器人项目、物联网解决方案、智能家居自动化和机器学习。

NiceGUI 基本概念#

NiceGUI 提供了各种 UI 组件(或元素),如按钮、滑块、文本、图像、图表等等。你的应用将这些组件组装成页面。当用户与页面上的某个项目交互时,NiceGUI 会触发事件(或动作)。你需要定义处理每个事件的代码,比如当用户点击名为 “Go” 的按钮时要执行的操作。

组件通过布局在页面上进行排列。布局提供诸如网格、标签页、轮播图、展开菜单以及其他用于排列组件的工具。许多组件都与你代码中的数据对象(模型)相关联,当值发生变化时,它会自动更新用户界面。

样式和外观可以通过多种方式控制。NiceGUI 接受某些样式的可选参数,例如按钮上的图标。其他样式可以用你稍后将学习到的函数,如 .styles.classes.props 来设置。像颜色和字体这样的全局样式可以用专用属性来设置。或者如果你更喜欢,几乎任何内容都可以用 CSS 来设置样式。

NiceGUI 动作、事件和任务#

NiceGUI 使用了异步/等待的事件循环来处理并发,这种方式资源效率高,并且有一个很大的好处,就是无需担心线程安全。这一部分展示了如何处理用户输入和其他事件,比如定时器和键盘绑定。同时,它还描述了一些辅助函数,用于将长时间运行的任务包装在异步函数中,以保持 UI 的响应性。请记住,所有的 UI 更新都必须在主线程上与其事件循环一起发生。

NiceGUI 实现#

NiceGUI 是通过 HTTP 服务器(FastAPI)提供的 HTML 组件来实现的,即使是对于原生窗口。如果你已经了解 HTML,一切都会感觉非常熟悉。如果你不了解 HTML,也没关系!NiceGUI 抽象了细节,因此你可以专注于创建美观的界面,而不必担心它们是如何实现的。

运行 NiceGUI 应用#

部署 NiceGUI 有几种选项。默认情况下,NiceGUI 在本地主机上运行服务器,并在本地机器上作为私有网页运行你的应用。以这种方式运行时,你的应用会出现在网页浏览器窗口中。你也可以在独立于网页浏览器的原生窗口中运行 NiceGUI。或者你可以处理多个客户端的服务器上运行的 NiceGUI - NiceGUI 网站 就是由 NiceGUI 提供的。

在使用组件创建了你的应用程序页面之后,你调用 ui.run() 来启动 NiceGUI 服务器。ui.run() 的可选参数可以设置像网络地址和服务器绑定的端口、应用是否以原生模式运行、初始窗口大小以及其他许多选项。

定制 NiceGUI#

如果你在应用中想要更多的定制,你可以使用底层的 Tailwind 类和 Quasar 组件来控制你的组件的样式或行为。你还可以通过对现有的 NiceGUI 组件进行子类化或者从 Quasar 导入新的组件来扩展可用的组件。所有这些都是可选的。NiceGUI 默认提供了你所需的一切,用来创建现代、时尚、响应式的用户界面。