QFW组件的两种使用方式

官方文档中提到了两种主要的使用方式:分别是使用Qt Designer提升控件和使用Designer脚本。

1. 使用Qt Designer提升控件

在Qt Designer中直接编辑控件,完成后右键控件,选择“提升为...”。类名一般为Qt原生类名去掉Q,头文件则是qfluentwidgets。

提升控件

完成后在Designer中看不出任何变化,接下来使用QUIC工具将其转化为python代码后,运行,才能看出变化。

2. 使用Designer插件

使用脚本启动designer.py工具,或者直接启动FluentDesigner中的Designer.exe,这个方法下在构建窗体控件时是所见即所得的,非常方便。

Fluent Designer

尝试构建第一个QFW项目

首先在PyCharm中创建一个空项目,注意项目的运行环境。如果你的pyqt5装在某个venv虚拟环境下或者conda环境中注意选择。这一步骤具体操作略过。

启动新项目后,在PyCharm中找到配置好的外部工具,启动Qt Creator窗口设计器,新建一个QWidget页面,并编辑页面。

image-btap.png
注意:我这里启动的不是之前配置好的Qt Creator,而是QFW提供的设计器,这个设计器可以直接以“所见即所得”的方式编辑QFW控件,详情见官方文档。

image-kmyw.png
完成编辑后,将其保存为test.ui,然后回到PyCharm使用配置好的PyUIC工具将ui文件转换为py脚本。

配置PyQt5窗口模板代码

接下来便是非常核心的一步,我们需要在main.py中书写一些标准的pyqt模板代码以启动窗口,然而这样的模板代码每次都要手动书写是非常麻烦的,所以我们需要编制一个模板并配置到PyCharm中:
。QWidget模板给出如下,重要部分以作标注:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget
#自动补全后在这里引入窗口py文件
# 这个启动脚本继承自QWidget,如需继承其它类型的窗口记得修改

class $CLASS_NAME$(QWidget): # $CLASS_NAME$是一个脚本变量,在提示输出后需要自己输入,在这里补加窗口对象参数
    def __init__(self):
        super().__init__()
        # 这里添加self.setupUi(self)直接展示窗口

if __name__ == '__main__':
    # enable dpi scale
    QApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
    QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
    app = QApplication(sys.argv)
    w = $CLASS_NAME$()
    w.show()
    app.exec()

将这个模板代码复制,并打开设置-编辑器-实时模板-“+”新建实时模板。编写缩写名并粘贴模板代码,然后在下方“定义”处选中Python并确定。这样就可以在编辑Python文件时,输入提示词QWidget直接补全模板代码。

新增实时模板

image-xlkb.png

完成编辑后,我们就完成了一个PyQt5窗口的编写与运行。

image-efly.png