PySide6动态页面加载失败

PyQt6和PySide6这两个库在加载区别在于它们对加载从Qt Creator/Designer导出的.ui 文件的处理。PyQt6提供了uic 子模块,可以用来直接加载UI文件,以产生一个对象。这感觉很像Pythonic(如果你忽略了camelCase)。

PyQt6:

import sys
from PyQt6 import QtWidgets, uic

app = QtWidgets.QApplication(sys.argv)

window = uic.loadUi("mainwindow.ui")
window.show()
app.exec()

PySide6:

import sys
from PySide6 import QtCore, QtGui, QtWidgets
from PySide6.QtUiTools import QUiLoader

loader = QUiLoader()

app = QtWidgets.QApplication(sys.argv)
window = loader.load("mainwindow.ui", None)
window.show()
app.exec_()

要在PyQt6中加载一个UI到一个现有的对象上,例如在你的QMainWindow.__init__ ,你可以调用uic.loadUI ,将self (现有的widget)作为第二个参数。

import sys
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6 import uic


class MainWindow(QtWidgets.QMainWindow):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        uic.loadUi("mainwindow.ui", self)


app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()

PySide6加载器不支持这个--.load 的第二个参数是你正在创建的widget的widget。这阻止了你向widget的__init__ 块添加自定义代码,但你可以通过一个单独的函数来解决这个问题。

import sys
from PySide6 import QtWidgets
from PySide6.QtUiTools import QUiLoader

loader = QUiLoader()

def mainwindow_setup(w):
    w.setWindowTitle("MainWindow Title")

app = QtWidgets.QApplication(sys.argv)

window = loader.load("mainwindow.ui", None)
mainwindow_setup(window)
window.show()
app.exec()

转载至:PyQt6 vs PySide6 - 这两个Python Qt库之间有什么区别? - 掘金 (juejin.cn)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值