PySide6 QUiLoader 不显示窗口

文章讲述了作者在使用Pyside6编程时遇到的问题,即窗口无法显示,经排查发现是由于QUiLoader对象应在QApplication之前初始化。提供了解决方案并给出了修正后的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个简单的 Pyside6 编码。

但是当我执行下面的代码时,它不会显示窗口,一直卡着不动。我在代码中放入打印代码去找问题在哪里,发现问题在 self.ui = QUiLoader().load(file)。print(self.ui) 未执行。

没有错误消息。它只是一直运行而不显示窗口。

"""Pyside6 演示"""
import sys

# 安装 pyside6
# pip install pyside6

# 添加 designer 快捷工具
r'''
打开设置-工具-外部工具
打开 QtDesigner
点击 + 号,输入以下内容
名称:Qt Designer
程序:D:\Python\Lib\site-packages\PySide6\designer.exe
工作目录:$ProjectFileDir$

ui 文件转 py 文件
再次点击 + 号,输入以下内容
名称:QtUIC
程序:D:\Python\python.exe
实参:-m PyQt6.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
工作目录:$FileDir$
'''

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


class Test:
    def __init__(self):
        super(Test, self).__init__()

        file = QFile('UI.ui')
        file.open(QFile.ReadOnly)
        file.close()
        
        self.ui = QUiLoader().load(file)
        print(self.ui)

        self.ui.B_change.clicked.connect(self.change_text)
        # self.ui.B_show.clicked.connect(lambda: self.change_text('123'))

    def change_text(self):
        self.ui.L_result.setText('你好')


if __name__ == '__main__':

    app = QApplication([])

    window = Test()
    window.ui.show()
    app.exec()

这可能只是 6.6.0 或 6.6.1 版本的 Pyside6 的一个错误。

解决方案:QUiLoader 对象需要在 QApplication 之前初始化。

正确的代码如下。

"""Pyside6 演示"""
import sys

# 安装 pyside6
# pip install pyside6

# 添加 designer 快捷工具
r'''
打开设置-工具-外部工具
打开 QtDesigner
点击 + 号,输入以下内容
名称:Qt Designer
程序:D:\Python\Lib\site-packages\PySide6\designer.exe
工作目录:$ProjectFileDir$

ui 文件转 py 文件
再次点击 + 号,输入以下内容
名称:QtUIC
程序:D:\Python\python.exe
实参:-m PyQt6.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
工作目录:$FileDir$
'''

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


class Test:
    def __init__(self):
        super(Test, self).__init__()

        file = QFile('UI.ui')
        file.open(QFile.ReadOnly)
        file.close()

        self.ui = loader.load(file)

        self.ui.B_change.clicked.connect(self.change_text)
        # self.ui.B_show.clicked.connect(lambda: self.change_text('123'))

    def change_text(self):
        self.ui.L_result.setText('你好')


if __name__ == '__main__':
    loader = QUiLoader()
    app = QApplication(sys.argv)

    window = Test()
    window.ui.show()
    app.exec()

<think>好的,用户想要寻找PySide6的相关教程、入门指南和使用示例。我需要先整理现有的引用信息,看看有哪些可用的资源。 根据引用内容,用户已经提到了三个来源:[^1]、[^2]和[^3]。这些引用主要涉及PySide6的安装步骤和基础使用,比如通过pip安装,解决模块未找到的错误,以及IDE的选择。过用户可能需要更全面的教程,包括如何构建项目、编写代码和实际应用示例。 首先,我应该建议用户查阅官方文档,因为这是最权威的资源。官方文档通常涵盖安装、基础语法、控件使用和高级功能。然后,推荐一些在线教程和书籍,比如ZetCode的教程和《Rapid GUI Programming with Python and Qt》,这些资源结构清晰,适合同层次的学习者。 接下来,示例代码部分需要展示PySide6的基本用法,比如创建窗口、添加按钮和布局管理。这部分要确保代码正确,并且有注释解释每部分的功能。同时,还要提到如何结合Qt Designer来设计界面,这样可以提升开发效率。 在进阶学习方面,可以提到信号与槽机制、多线程处理以及自定义控件的开发,这些都是实际项目中常用的技术。此外,社区资源如Stack Overflow和GitHub项目也是解决问题和获取灵感的好地方。 最后,生成的相关问题需要覆盖用户可能遇到的后续疑问,比如安装问题、基础教程、与Qt的区别、常见错误解决和界面设计工具。这样用户可以根据自己的需求进一步探索。 整个回答需要结构清晰,分步骤引导用户从安装到实际开发,确保信息准确且易于理解。同时,引用标识要正确对应到之前的参考资料,保持一致性。</think>以下是关于PySide6的教程和使用指南的整理: ### PySide6 入门指南 1. **安装与配置** - 使用pip安装PySide6: ```bash pip install pyside6 ``` 安装成功后,会包含Qt Designer工具(用于可视化界面设计)[^3]。 - IDE推荐:VSCode、PyCharm等支持Python和Qt开发的工具。 2. **基础语法与项目构建** - 第一个PySide6程序示例: ```python import sys from PySide6.QtWidgets import QApplication, QLabel app = QApplication(sys.argv) label = QLabel("Hello PySide6!") label.show() sys.exit(app.exec()) ``` 此代码创建一个窗口显示文本标签。 3. **Qt Designer的使用** - 通过Qt Designer设计界面(`.ui`文件),再使用`pyside6-uic`工具将`.ui`文件转换为Python代码: ```bash pyside6-uic mainwindow.ui > ui_mainwindow.py ``` - 在代码中动态加载`.ui`文件: ```python from PySide6.QtUiTools import QUiLoader loader = QUiLoader() window = loader.load("mainwindow.ui") window.show() ``` 4. **核心概念** - **信号与槽**:PySide6的事件驱动机制,例如按钮点击事件: ```python button.clicked.connect(lambda: print("Button clicked!")) ``` - **布局管理**:使用`QVBoxLayout`、`QHBoxLayout`等管理控件排列。 - **控件库**:`QPushButton`、`QLineEdit`、`QComboBox`等常用控件。 --- ### 推荐学习资源 1. **官方文档** - [PySide6官方文档](https://doc.qt.io/qtforpython/):包含API参考、示例代码和模块说明。 2. **在线教程** - **ZetCode PySide6教程**:分步讲解控件使用和项目实战。 - **Real Python教程**:结合实例讲解GUI开发流程。 3. **书籍推荐** - 《Rapid GUI Programming with Python and Qt》:涵盖PyQt/PySide核心内容。 4. **示例项目** - GitHub搜索关键词:`PySide6 examples`,可找到开源项目如计算器、文本编辑器等。 --- ### 进阶学习 1. **信号与槽的高级用法**(如自定义信号) 2. **多线程与异步处理**(避免界面卡顿) 3. **自定义控件的开发**(继承`QWidget`) 4. **国际化支持**(多语言翻译) ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值