Fluent UI 的加入,就像给 PyQt6 穿上 Windows 11 的自带滤镜:干净、顺滑、年轻。看一眼,你就会觉得:嗯,这界面终于有现代软件的味道了。

想要看效果,最好的方式永远是——跑一个 demo。
PyQt6-Fluent-Widgets 官方自带了大量示例项目,打开即用。运行后,你将看到一个拥有按钮、图标、输入框、导航栏的完整 Fluent UI 风格界面,非常接近 Windows 11 的应用体验。
要查看 PyQt6-Fluent-Widgets 的效果,我们可以运行库提供的示例项目。如下图所示:

接下来我们在浏览器地址输入https://github.com/zhiyiYo/PyQt-Fluent-Widgets/tree/PyQt6,点击右侧的code按钮的下拉按钮,页面展示如下:

若您熟悉 Git,可以直接克隆项目;如果不熟悉,可以从官网下载 ZIP 文件,并解压到本地。解压后,将 Examples 文件夹复制到我们的项目的根目录下。如下图所示:

接下来我们展开example文件夹,打开 gallery 文件夹中的 demo.py。如下图所示:

右键点击 Run 运行,或通过终端进入 Examples/gallery 文件夹并执行命令
或在终端里:
python demo.py
以启动示例界面,稍等片刻,它会启动。第一次加载可能略慢,但成功后你将看到一个让人眼前一亮的 Fluent UI 示例主页。按钮、输入框、对话框、提示框、布局、导航……全都整整齐齐地摆在你面前。这是 Fluent UI 给你的第一感受:可视化程度高,组件丰富,样式统一。
示例界面里展示了几乎所有常用组件,你完全可以把它当成一个“组件词典”。这里挑几个关键模块感受一下:

✔ 图标 Icon
各种样式、各种风格,适合导航栏、按钮、提示框等。提供多种图标库供选择。

✔ 基本输入组件
基本输入:包含多种按钮(基础、带标签、带图标等)、输入框(含密码输入)。

✔ 布局 Layout
布局:支持动态布局,自定义窗口、浮动提示等效果。

✔ 导航
导航:种类繁多

✔ 状态和信息
状态和信息:支持多样的分页、徽章样式。

✔ 日期和时间
日期和时间:拿来即用,方便省事

✔ 对话框和弹出窗口
对话框和弹出窗口:你几乎不需要写样式,直接拿来就是 Windows11 风格。

✔ 视图与表格
视图和表格:列表、树形结构、表格控件……非常适合管理系统、后台工具、数据应用。

在开发自定义项目时,我们可以直接利用这些组件和布局,而无需额外设计 UI 样式,能够将精力更集中于业务逻辑的实现。
在了解了这些组件效果之后,我们可以根据项目的实际需求,选择相应的组件来实现所需的效果。例如,当你需要使用图标时,可以查看图标的具体用法;当需要输入框时,可以参考“基本输入”中关于输入框的使用示例。
接下来,让我们来看看代码的具体实现逻辑。在项目目录中,gallery文件夹代表全局效果配置,我们之前看到的效果就是由该文件夹中的内容提供的。如果我们想单独查看某个效果,比如只关注输入框,则可以查看basic_input模块;如下图所示:

如果只想看按钮的效果,可以点击button文件下的demo.py进行运行,从而查看按钮的各种样式效果。这些效果包括普通样式、无背景色样式、带图标样式、下拉样式等。如下图所示:

一句话:你写业务逻辑,它替你把 UI 做好看。
你会发现:PyQt6 原生的组件命名,它也保留了,但换成更 Fluent 的风格。
例如,在之前的PyQt6项目中,我们使用button组件进行按钮的调用,而在qfluentwidgets组件中,相应的标识会有所不同。例如,在PyQt6中称为QPushButton,而在qfluentwidgets中则叫作PushButton;带颜色的按钮则称为PrimaryPushButton。如果不确定如何选择具体的按钮样式,可以通过代码来查找相应的标识。组件库提供了详细的代码示例,我们可以方便地查找对应的组件名称。例如,如果我们想使用“Standard push button”,只需搜索“Standard push button”即可找到对应的代码行,直接复制使用即可。如下图所示:

这种设计与PyQt6的命名规则非常相似,作者在开发时尽量保持与PyQt6的兼容性,以便用户能够快速上手。通过这种方式,开发者可以在最小的学习成本下掌握该组件库的使用方法。
同样地,如果需要使用下拉按钮,可以查看其名称为 SplitPushButton。如下图所示:

通过搜索 SplitPushButton,可以看到有多种效果选项,例如 1 是基本效果,2 是带图标的效果。代码截图如下:

菜单的子选项是通过 setFlyOut 和 menu 添加的。menu 中通过 addAction 添加了选项,如 Basketball、Sing 和 Music,这些选项展示了按钮下拉菜单中的具体内容。通过查看源码与页面样式,我们可以理解这些样式效果在代码中的实现方式。在实际使用时,这些组件的基本操作与 PyQt6 非常相似,但在一些标识上有所区别。
以 PushButton 为例,按住ctrl或者cmd键进行单击PushButton,如下图所示:

我们查看其源码,可以发现,PushButton 继承自 PyQt6 的 QPushButton 类,在此基础上进行了扩展,使得按钮组件效果更加丰富。尽管 PushButton 添加了许多新功能,但依然与 PyQt6 保持一致性,因此操作方法十分接近。

接下来,我们再来看一些常见的组件,如导航栏。导航栏组件 navigation 提供了不同的展示效果,例如 navigation1 ,如下图所示:

可以在点击时展开和收缩,提供了层级显示的功能,可以支持二级、三级导航等。如下图所示:

根据需求,我们可以将此示例 demo 代码调整为所需的效果,将图标替换为所需的内容,将文字内容进行修改,点击后可显示对应页面。如果有自己的页面内容,只需设置显示相应页面即可。导航栏组件在布局中的用途广泛,我们将会在后续章节进行详细讲解。
此外,还有一些 window 窗口示例,其中包含预设的功能样式。例如,提供了一个时钟示例,展示了时分秒的动态效果,这样的时钟组件可以直接作为模板使用,在其中加入自定义的业务逻辑即可。如下图所示:

一个非常重要的建议:先运行、后使用,不用死记硬背代码。在实际开发过程中,建议充分利用这些示例代码。许多示例都可以在简单调整后直接使用,大大提升了开发效率,使得我们可以将更多精力专注于业务逻辑的实现,而非样式布局本身。
你只需要:
这比你从零写 UI 快十倍。等熟悉后,你自然就能“看名字猜组件”,效率会飞跃。
很多人坚持不下去 PyQt6,很大原因是:
Fluent Widgets 解决了这一切。
它让 PyQt6:
如果你正在做学生管理系统、办公工具、后台系统、可视化软件……
一定要试试 Fluent Widgets。
你会发现:PyQt6 原来也能这么“高级”。
愿你写的每一行代码,都能在屏幕上闪闪发光。愿你的应用,也变成你心中“它本来就该是这样的样子”。✨
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删