Python学习笔记——PySide6设计GUI应用之UI与逻辑分离

这篇具有很好参考价值的文章主要介绍了Python学习笔记——PySide6设计GUI应用之UI与逻辑分离。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、打开PySide6的UI设计工具pyside6-designer,设计一个主窗口,保存文件名为testwindow.ui

2、使用PySide6的RCC工具把testwindow.ui文件转换为testwindow_rc.py文件,此文件中有一个类Ui_MainWindow(包含各种控件对象)

一、通过类继承实现:

# 导入标准库sys
import sys
# 导入PySide6库中的两个类:QApplication, QMainWindow
from PySide6.QtWidgets import QApplication, QMainWindow
# 导入使用PySide6-Rcc工具转换的UI设计窗口Ui_MainWindow类
from testwindow_rc import Ui_MainWindow

# 应用程序
class TestMainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(TestMainWindow, self).__init__()
        self.setupUi(self)

if  __name__ == '__main__':
    app = QApplication(sys.argv)
    win = TestMainWindow()
    win.show()
    sys.exit(app.exec())

class TestMainWindow(QMainWindow, Ui_MainWindow): 定义了一个新的类TestMainWindow,它继承自 QMainWindow(PySide6.QtWidget中的QtMainWindow类) 和 Ui_MainWindow。

在这种多重继承的情况下,QMainWindow 是 PySide6中提供的一个主窗口类,它包含了很多创建和管理主窗口的功能。而 Ui_MainWindow 是由 PySide6 Designer 生成的一个界面类,它包含了在设计器中设计的窗口界面及其上的所有元素和布局。

TestMainWindow 类通过继承这两个类,同时获得 QMainWindow 的窗口管理功能和 Ui_MainWindow 的界面元素。

调用执行self.setupUi(self) :其实是调用Ui_MainWindow中的setupUi()方法,传入实参self是TestMainWindow类的实例对象,从而实现设计的窗口界面及其上元素(控件)的初始化完成布局。

通过上面的分离,以后修改Ui文件进行界面元素添加和修改属性等,然后转化Ui文件,将不影响逻辑代码。

另外,定义和设计方法来控制窗口及其上控件的行为,响应用户的操作等。要在TestMainWindow类的 __init__(self) 及其它方法中完成,这样不会因为修改ui文件及转化而被覆盖。

super(TestMainWindow, self).__init__(),是 Python 中用于调用父类构造方法的一种写法。在这里,TestMainWindow 是子类,而 self 是子类的实例。super() 函数是用来临时改变当前类的父类,并返回一个父类的实例。因此,super(TestMainWindow, self) 返回的就是 TestMainWindow 的父类的一个实例,然后调用其 __init__() 方法,即初始化方法。

这样做的目的是在子类的 __init__() 方法中,首先执行父类的 __init__() 方法,以便能够继承父类的属性和方法。这是一种常见的在面向对象编程中实现继承的方式。

在 Python 3 中,可以直接在子类中使用 super().__init__(),Python 会自动解析当前类和 self,不需要显式地传入。

二、关联界面类来实现

# 导入标准库sys
import sys
# 导入PySide6库中的两个类:QApplication, QMainWindow
from PySide6.QtWidgets import QApplication, QMainWindow
# 导入使用PySide6-Rcc工具转换的UI设计窗口Ui_MainWindow类
from testwindow_rc import Ui_MainWindow

# 创建的类继承PySide6的主窗口类QMainWindow
class TestMainWindow(QMainWindow):

    def __init__(self):
        # 执行父类QMainWindow的构造函数,从而让子类TestMainWindow的实例对象
        # 具有父类的功能和属性
        super().__init__()

        # 创建Ui界面类实例,并赋值给TestMainWindow的实例对象属性ui
        self.ui = Ui_MainWindow()
        
        # 调用TestMainWindow的实例对象属性ui的setupUi()方法
        # 传入实参self是TestMainWindow的实例对象,从而实现Ui界面元素的创建
        self.ui.setupUi(self)

if  __name__ == '__main__':
    app = QApplication(sys.argv)
    win = TestMainWindow()
    win.show()
    sys.exit(app.exec())

三、直接载入Ui文件

import sys
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
# 导入PySide6库中的两个类:QApplication
from PySide6.QtWidgets import QApplication
class TestMainWindow:
    def __init__(self):
        super(TestMainWindow, self).__init__()
        # 从ui文件中加载UI定义
        qfile = QFile("testwindow.ui")
        qfile.open(QFile.ReadOnly)
        qfile.close()
        # 从UI定义中动态创建一个相应的窗口对象
        self.ui = QUiLoader().load(qfile)

        if not self.ui:
            print(QUiLoader().errorString())
            sys.exit(-1)

if  __name__ == '__main__':
    app = QApplication(sys.argv)
    win = TestMainWindow()
    win.ui.show()
    sys.exit(app.exec())

笔者建议使用第一种方法,通过继承方式。文章来源地址https://www.toymoban.com/news/detail-853202.html

到了这里,关于Python学习笔记——PySide6设计GUI应用之UI与逻辑分离的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PySide6学习/教程/笔记(二):弹窗小页面

    注:本文示例都是从官方文档中找到的,有条件的可以去看一下。 首先,我们看一下,Qt应用最简单的结构是什么样。 一行一行解释。 前两行是导入需要使用的包。这个后面再讲。 app = QApplication(sys.argv) 这行代码创建了一个QApplication类的实例。首先什么是QApplication?回答这

    2024年02月02日
    浏览(45)
  • Pyside6/PyQT 项目实战,从0开始写一个GUI可视化项目:总览

    最近使用 Pyside6 编写了几个 GUI 工具,发现效果出奇的好。遂产生了分享它的念头。 接下来如果不出意外,大概没有意外,我会开始写 这个专栏 ,介绍从零开始去编写一个实用的 GUI 工具。 这是 Pyside6 第一篇:《总览》 本文对Pyside6在开发使用中进行了知识点的提炼,所以后

    2023年04月22日
    浏览(66)
  • Pyside6:加载.ui

    通常来说开发Qt的界面基本都在Qt Designer中进行的,它保存的文件为.ui,我们可以通过uic将其转变为.py文件(如何使用:Pyside6:安装及Pycharm配置_pyside6安装pycharm-CSDN博客)。 那么该如何进行加载呢?大致来说有两种方法: 这个非常简单,无需把.ui文件进行转换,但 loader.loa

    2024年02月03日
    浏览(43)
  • 【无标题】PySide6在非UI线程更新UI界面实例

            写一个SonThread类继承于QThread,直接在run函数中写我们要执行的动作(更新UI界面)。优点比较简单易懂,缺点只能被一种事件使用,不能重复利用。         使用threading来创建新线程,在新线程中使用SonThread来更新UI界面。只用写一个更新UI界面的类,可以被很多的

    2024年02月16日
    浏览(56)
  • PySide6 将.ui文件编译为.py文件

    1. 制作UI 平时使用QT creator设计器设计UI,然后可将其转化成 .py 文件,以供 .py 脚本使用。 2.Pyside6 转换ui为 .py 文件 pyside6使用过程: 生成的py文件: 3. .py 文件国际化 通过pyside6-uic生成的 .py 代码中,中文或文本将使用unicode表示,即:“机器人设置”(u\\\"u673au5668u4ebau8bbeu

    2024年02月12日
    浏览(51)
  • 使用pyside6将ui文件转换为py

    在MainWindow.ui文件所在文件夹搜索栏输入cmd,点击回车键; 示意图如下: 直接输入下述代码: 示意图如下:

    2024年04月23日
    浏览(40)
  • Pyside6入门教学——编写一个UI界面并显示

    1、安装Pyside6 输入下列命令安装Pyside6。 2、设计UI 打开Qt设计工具(在安装Pyside6包的目录下)。 【注】我这用的是anaconda虚拟环境,所以我的路径是D:AppAnaconda3envssnakeLibsite-packagesPySide6。 设计一个界面,如何设计这里不详细讲解。 设计完后保存,得到一个ui文件。(另存

    2024年01月20日
    浏览(49)
  • PySide6:Qt Designer UI文件的两种使用方式

    通过Qt Designer(PyQt6与PySide6对应的Designer设计的界面生成的UI文件有区别)设计的界面会生成对应的UI文件,一般会使用PyUIC工具将UI文件转换为对应的Py文件来使用,后面每次界面发生更新时都要重新转换一次,比较麻烦;另外,如果直接在UI文件中添加自己的代码,如信号与槽

    2024年02月11日
    浏览(49)
  • Pyside6(3): 自动生成UI的Qt参数输入对话框

    参数输入界面是桌面软件开发最繁琐的部分之一。特别是当系统中存在多种可编辑的数值模型时,由于各个模型的字段不同,每个字段的输入类型也不同,需要制作不同的UI,使用不同的UI控件,无疑会耗费大量时间,同时拓展性也非常差,因为每增加一个数值模型,都需要制

    2024年02月03日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包