第四节_PySide6中Qt Designer 的基础使用_下篇


前言

第三节_PySide6中Qt Designer 的基础使用_上篇 详细介绍了如何通过拖曳鼠标等可视化操作创建一个 UI 程序,并进行UI界面布局操作;由于Qt Designer 符合 MVC(模型—视图—控制器)设计模式,做到了显示和业务逻辑的分离,本节主要会对“信号/槽编辑器” 面板、 “动作编辑器” 面板和“资源浏览器” 面板功能进行详细的讲解,使读者明白业务逻辑方面,从而能整体构建出一个exe运行程序。


一、“信号/槽编辑器” 、 “动作编辑器” 和“资源浏览器” 面板简介

1.信号/槽编辑器面板(Signal/Slot Editor)

①功能概述
作用: 可视化连接控件的 信号(Signal) 与 槽函数(Slot),定义事件触发逻辑;
核心概念: 1)信号:控件的事件(如按钮点击 clicked、文本框内容变化 textChanged);
2)槽:事件触发后执行的函数(如关闭窗口 close()、更新标签文本 setText())。

②典型场景
1)快速原型设计:无需编写代码即可预览简单交互(如点击按钮关闭窗口);
2)简单逻辑绑定:直接连接内置槽函数(如 show()、hide())。

2.动作编辑器面板(Action Editor)

①功能概述
作用: 集中管理 QAction 对象,用于创建可复用的菜单项、工具栏按钮和快捷键操作;
核心价值: 统一配置动作属性(如文本、图标、快捷键),避免重复代码;

②典型场景
1)菜单/工具栏同步:同一操作(如“保存文件”)同时在菜单和工具栏展示;
2)快捷键管理:统一配置全局快捷键(如 Ctrl+S 触发保存动作)。

3.资源浏览器面板(Resource Browser)

①功能概述
作用: 管理应用程序的静态资源(如图片、图标、样式表),通过 .qrc 文件编译为 Python 模块,避免硬编码路径;
核心流程: 添加资源 → 编译为 .py → 代码中通过 :/ 前缀引用;

②典型场景
1)图标管理:统一应用图标、工具栏按钮图标;
2)样式表嵌入:将 CSS 文件编译到资源中,动态加载界面样式。

4.归纳

面板核心功能开发效率提升点
信号/槽编辑器快速绑定简单事件逻辑减少基础交互的编码量
动作编辑器统一管理菜单、工具栏和快捷键避免重复配置,提升代码可维护性
资源浏览器集中管理图片、图标等静态资源消除路径依赖,便于跨平台部署

通过合理利用这三个面板,开发者可以高效完成界面设计、事件绑定和资源管理,显著降低 PySide6 项目的开发复杂度。
但是 信号/槽 在 UI 界面只能处理简单的逻辑,复杂逻辑(如参数传递、动态绑定)仍需在代码中处理,故本节不会讲解,后续只会通过代码来对 信号/槽 进行讲解。

二、资源文件的添加

1.资源文件创建

在资源浏览器面板①点击 “编辑资源 ”按钮;②新建qrc资源文件,命名为res002.qrc,并保存到项目根目录;③添加前缀,并命名为res;④添加所需要的文件,如图片、图标:

在这里插入图片描述

2.将.qrc 文件转换为.py 文件

使用PySide6-rcc资源文件编译工具将 res002.qrc 文件转换成 res002_rc.py 文件,便于主程序中进行引用和后续exe可执行文件的打包。(注意:如果 res002.qrc 资源文件进行了重新添加或者更改后,一定要使用 PySide6-rcc 工具将 res002.qrc 文件再次进行转换,这样主程序引用的 res002_rc.py文件就能一直保持最新的

在这里插入图片描述

三、菜单栏与工具栏

1.菜单栏的添加

Main Window 即主窗口,主要包含菜单栏、工具栏、任务栏等。先双击菜单栏中的 “在这里输入”,然后输入文字,最后按 Enter 键即可生成菜单。对于一级菜单,可以通过输入“文件(&F)”和“编辑(&E)”来加入菜单的快捷键,需要注意的是,要按 Enter 键来确认菜单的输入:

在这里插入图片描述
在 Qt 和 PySide6 中,& 符号用于 定义快捷键(助记符),使得用户可以通过 Alt + 字母 快速操作控件(如按钮、菜单项);

1)文本解析:

Qt 在渲染控件文本时,会自动检测 & 符号,并将其后的第一个有效字母标记为快捷键;
& 符号本身不会显示,而是触发下划线效果(如 “Save” 显示为 “S ave”)。

2)事件绑定:

Qt 自动将快捷键与控件的默认动作绑定(如按钮的 clicked 信号);
无需手动编写快捷键逻辑(如 QShortcut)。

3)使用场景

menu = QMenu(“&File”) ---------------------- # Alt+F 展开菜单
action = menu.addAction(“&New”) ---------- # Alt+N 触发动作

在第一级菜单 文件(&F) 下输入 “打开” 、“新建” 和 “关闭” 这 3 个子菜单,每个子菜单间添加分隔符;在第一级菜单 编辑(&E) 下输入 “计算器” 和 “记事本” 这 2 个子菜单,子菜单间添加分隔符。(注意:在菜单栏中子菜单无法输入中文,先用拼音代替,后续可以通过 “属性编辑器” 或者 “动作编辑器” 面板进行中文改名

在这里插入图片描述
在这里插入图片描述

在 “动作编辑器” 面板对上面添加的 子菜单 进行动作编辑,双击需要操作的 子菜单 进入动作编辑界面,对每一栏进行编辑,第 5 步和第 6 步都是进行添加图标,区别是第 5 步是引用的内部自带的系统图标;第 6 步是可以直接引用路径或者qrc资源,如果选中资源文件,就会直接跳转到 “资源浏览器” 界面,从而选中资源,这样上面创建的资源文件就可以用于此时了:

在这里插入图片描述
下图是 5 个子菜单动作添加完成后的界面:

在这里插入图片描述

2.工具栏的添加

在主窗口添加工具栏。Qt Designer 默认生成的主窗口是不显示工具栏的,可以通过单击鼠标右键来添加工具栏,添加完成后可以在对象检查器中看到 “menubar”、“toolBar”、“statusbar”、,分别代表菜单栏、工具栏和状态栏(位置位于主界面的最下方):

在这里插入图片描述

将需要的动作从“动作编辑器”面板拖曳到工具栏中,可以看到如果 子菜单 动作中增加了系统图标或者自定义图标,都会在工具栏以图标的形式显示,如果没添加图标,在工具栏中就以 子菜单 动作的文本进行显示:

在这里插入图片描述

四、界面文件和逻辑文件的结合

1.完成界面文件

对UI界面按照自我想法进行优化调整,例如通过引用已完成的 qrc资源文件 来添加图标。当优化完成后进行保存,并使用 PySide6-uic工具将 test002.ui 文件转换成直接导入的 Python 代码 test002_ui.py 文件,此时界面文件的工作已全部完成:

在这里插入图片描述

2.完成逻辑文件

在 Demo002.py 中编写主程序:

import sys
import os

from PySide6.QtWidgets import *
from PySide6.QtGui import *
from PySide6.QtCore import *

from UI.test002_ui import Ui_MainWindow


class MyWindow(QMainWindow):  # 这里的继承的父类一定要注意使用你定义UI窗体类型
    def __init__(self):
        super().__init__()
        # 实例化 ui.py 文件中的UI窗体类
        self.ui = Ui_MainWindow()
        # 使用 Ui_MainWindow 中的 setupUi 方法给当前窗体加载 ui 界面
        self.ui.setupUi(self)

        # 菜单的点击事件,当点击打开菜单时连接槽函数 openFile()
        self.ui.FileOpen.triggered.connect(self.openFile)

        # 菜单的点击事件,当点击关闭菜单时连接槽函数 close()
        self.ui.FileClose.triggered.connect(self.close)
        # 通过按键和自定义函数关闭程序
        self.ui.btn_Close.clicked.connect(self.close)

        # 打开计算器
        self.ui.OpenCalc.triggered.connect(lambda: os.system('calc'))
        # 通过按键和自定义函数打开计算器
        self.ui.btn_OpenCalc.clicked.connect(self.m_OpenCalc)

        # 打开记事本
        self.ui.OpenNote.triggered.connect(lambda: os.system('notepad'))
        #通过按键和自定义函数打开记事本
        self.ui.btn_OpenNote.clicked.connect(self.m_OpenNote)

        # 打开图片
        self.ui.btn_Select.clicked.connect(self.file_filter)  # 信号/槽

    def openFile(self):
        file, ok = QFileDialog.getOpenFileName(self, caption="打开", dir=os.path.abspath('.'), filter="All Files (*);;Text Files (*.txt)")
        # 在状态栏显示文件地址
        self.statusBar().showMessage(file)

    def m_OpenCalc(self):
        self.ui.TextEdit_1.setPlainText("打开了计算器!!!")
        os.system('calc')

    def m_OpenNote(self):
        self.ui.TextEdit_1.setPlainText("打开了记事本!!!")
        os.system('notepad')

    def file_filter(self):
        file_name, _ = QFileDialog.getOpenFileName(self, caption='Open file1', dir=os.path.abspath('.'),
                                                   filter="Image files (*.jpg *.png);;Image files2(*.ico *.gif);;All files(*)")
        self.ui.lab_Image.setPixmap(QPixmap(file_name))
        self.ui.lineEdit.setText(file_name)
        # 使用 setScaledContents 函数从而让图像自适应QLabel窗口
        self.ui.lab_Image.setScaledContents(True)

        self.ui.TextEdit_2.setPlainText("打开了图片!路径为:"  + file_name)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    #设置UI界面的图标,使用:/来引用资源文件
    app.setWindowIcon(QIcon(':/res/Resources/image/5.jpeg'))
    windows = MyWindow()
    windows.show()
    sys.exit(app.exec())

3.主体逻辑代码解析

from UI.test002_ui import Ui_MainWindow 代码将界面文件结合在主体函数中,然后通过实例化UI窗体 self.ui = Ui_MainWindow() 达到在主程序对各控件的操作;

每个 PySide 6 程序都需要有一个 QApplication 对象,QApplication 对象包含在QtWidgets 模块中。sys.argv 是一个命令行参数列表。Python 脚本可以从 Shell 中执行,也可以携带参数,这些参数会被 sys.argv 捕获,代码如下:

app = QApplication(sys.argv)

实例化MyWindow(),并在屏幕上显示,代码如下:

windows = MyWindow()
windows.show()

app.exec()是 QApplication 对象的函数,exec()函数的作用是“进入程序的主循环直到 exit()被调用”。如果没有 exec()函数,win.show()函数也会起作用,只是运行的时候窗口会闪退,这是因为没有“进入程序的主循环”就直接结束了。使用 sys.exit()函数退出可以确保程序完整地结束,在这种情况下系统的环境变量会记录程序是如何退出的。代码如下:

sys.exit(app.exec())

4.程序运行展示

在这里插入图片描述

总结

以上通过对“信号/槽编辑器” 面板、 “动作编辑器” 面板和“资源浏览器” 面板功能进行详细的讲解,来阐述程序的业务逻辑方面,后续使界面文件和逻辑文件相结合,从而完成一个完整的程序,达到了快速入门目的,小伙伴也动手写一个小程序吧!
PySide6中Qt Designer 的基础使用篇源码下载地址为:
https://download.csdn.net/download/qq_44869959/90897791

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶子丶苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值