SAdb项目第三章-Pyside6资源文件与UI文件的使用

好了,本章是第三章,讲述数和使用将第二章弄的简易UI界面用程序跑起来。

本章讲述两种方式,一种是转换后的,一种是直接使用UI文件的方式。

使用UI转换的Py文件后运行程序

复制代码
from UI.index import Ui_Form
from PySide6.QtWidgets import QWidget, QApplication


class Index_UI(QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()


if __name__ == '__main__':
    app = QApplication([])
    index = Index_UI()
    app.exec()

如上,这就是第一种方式了,也是博主常用的一种方式。运行代码后你也许会遇到这么一个报错:**ModuleNotFoundError: No module named 'resources_rc'**,别担心,这是项目的开始,也会告诉你如何解决这些问题。
这个问题就是说resources_rc模块没有找到,也就是我们的转换后的py文件出了问题,将index.py文件中的import resources_rc修改成from . import resources_rc即可为什么要这么改,因为我们修改了PySide6默认寻找的文件路径层级,导致它找不到目录下的资源文件,所以需要指定告诉它这个资源文件从哪引入。
还有一个解决思路,就是将资源文件放在根目录下,如下图所示,就能解决了

直接使用UI文件

也就是在代码中直接加载UI文件资源。

复制代码
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QWidget, QApplication


class Index_UI:

    def load_ui(self, file_name):
        loader = QUiLoader()
        file = QFile(file_name)
        file.open(QFile.ReadOnly)
        ui = loader.load(file)
        file.close()
        return ui


if __name__ == '__main__':
    app = QApplication([])
    index = Index_UI().load_ui(r'UI\index.ui')
    index.show()
    app.exec()

代码解读:代码是通过读取UI文件的方式进行加载的。代码还可以再重新封装一下:

复制代码
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QWidget, QApplication
import resources_rc

class Index_UI:
    def __init__(self):
        self.ui = None

    def load_ui(self, file_name):
        loader = QUiLoader()
        file = QFile(file_name)
        file.open(QFile.ReadOnly)
        self.ui = loader.load(file)
        file.close()
        self.ui.show()


if __name__ == '__main__':
    app = QApplication([])
    index = Index_UI()
    index.load_ui(r'UI\index.ui')
    app.exec()

这样子就能更好的使用ui实例了。这样的话,就比第一种方式多用两个模块,代码看起来也没有那么的优雅。好处就是不用像之前那样,疯狂的转换UI文件了。两种方式二选一,主要还是看自己,博主习惯第一种方式了。

展示结果

注意:上述代码中资源文件换位置之后,UI文件没有图标,需要参考文章二重新设置一下icon,设置完成后再次转换后运行代码即可解决没有图标的问题

下一章讲述designer的具体使用,以及工具UI的具体布局

相关推荐
AC赳赳老秦7 小时前
OpenClaw email技能:批量发送邮件、自动回复,高效处理工作邮件
运维·人工智能·python·django·自动化·deepseek·openclaw
zhaoshuzhaoshu7 小时前
Python 语法之数据结构详细解析
python
AI问答工程师7 小时前
Meta Muse Spark 的"思维压缩"到底是什么?我用 Python 复现了核心思路(附代码)
人工智能·python
zfan5208 小时前
python对Excel数据处理(1)
python·excel·pandas
小饕8 小时前
我从零搭建 RAG 学到的 10 件事
python
老歌老听老掉牙8 小时前
PyQt5+Qt Designer实战:可视化设计智能参数配置界面,告别手动布局时代!
python·qt
格鸰爱童话9 小时前
向AI学习项目技能(六)
java·人工智能·spring boot·python·学习
悟空爬虫-彪哥9 小时前
VRChat开发环境配置,零基础教程
python
数据知道9 小时前
《 Claude Code源码分析与实践》专栏目录
python·ai·github·claude code·claw code
曲幽9 小时前
FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了!
python·vue·upload·fastapi·web·blob·chunk·spark-md5