Pyside6:加载.ui

通常来说开发Qt的界面基本都在Qt Designer中进行的,它保存的文件为.ui,我们可以通过uic将其转变为.py文件(如何使用:Pyside6:安装及Pycharm配置_pyside6安装pycharm-CSDN博客)。

那么该如何进行加载呢?大致来说有两种方法:

一、使用QUiLoader加载

from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QApplication
from PySide6.QtCore import QFile
import sys

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui_file = QFile("ui/xxx.ui")
    ui_file.open(QFile.ReadOnly)
    loader = QUiLoader()
    window = loader.load(ui_file)
    window.show()
    sys.exit(app.exec())

这个非常简单,无需把.ui文件进行转换,但loader.load(ui_file)出来的类型都是基本类型,可能无法完成很多自定义的开发需求。所以需要扩展QUiLoader进行派生类调用,还有一些QUiLoader的方法可以使用,但本篇不讨论。

二、使用.py加载

2.1外部添加

当我们使用外部添加ui时,需要让ui.setupUi()方法中传入我们实例的对象:

# -*- coding: utf-8 -*-
from PySide6.QtWidgets import QApplication
import sys
from MyMainWindow import MyMainWindow
from ui import main_window_ui

if __name__ == '__main__':
    app = QApplication(sys.argv)  
    MainWindow = MyMainWindow()  
    ui = main_window_ui.Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()  
    sys.exit(app.exec())  

优点:可以为不同的实例对象快速添加不同的ui,不需要在Designer中进行提升

缺点:实例对象中想使用ui中的对象,需要额外引用,且无法进行代码联想提示

2.2内部添加 

 内部添加即在我们调用__init__时,将ui挂载到引用对象上:

# -*- coding: utf-8 -*-
from PySide6.QtWidgets import QMainWindow
from ui.main_window_ui import Ui_MainWindow


class MyMainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

优点:可以在实例对象中方便地调用ui中的对象,且可以进行代码联想提示 

缺点:一个ui对应一个类,需要在Designer中进行提升才能方便使用

以上方法需要uic进行转换为.py,此时可以直接使用一个我们的派生类进行扩展,非常方便。本人推荐使用内部添加的方法,此方法可以方便地开发,能够使用代码提示功能。

三、总结

真实开发环境还是使用.py开发最合适,因此更推荐第二种方法中的内部添加。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值