Maya Standalone环境使用PySide2创建QWidget报错问题咨询
问题根源
Maya Standalone默认初始化时会自动创建QGuiApplication类型的Qt应用实例,该类型仅支持无界面的Qt逻辑,不支持QWidget相关组件的创建;同时Qt全局仅允许存在一个应用实例,所以在Maya初始化后再创建QApplication会提示实例已存在。
解决方案
调整初始化顺序,在启动Maya Standalone之前先创建QApplication实例,Maya初始化时会自动复用已有的Qt应用实例,不会再生成不兼容的QGuiApplication。
可运行的示例代码
from PySide2 import QtWidgets import maya.standalone import sys # 第一步:先初始化QApplication app = QtWidgets.QApplication(sys.argv) # 第二步:再启动Maya Standalone maya.standalone.initialize() # 可正常创建任意QWidget组件 test_dialog = QtWidgets.QDialog() test_dialog.resize(300, 200) test_btn = QtWidgets.QPushButton("测试按钮", parent=test_dialog) test_dialog.show() # 若需要窗口保持交互状态,启动Qt事件循环(纯后台操作无需显示界面可省略该行) app.exec_() # 退出前销毁Maya实例 maya.standalone.uninitialize()
补充说明
- 若仅需要实例化QWidget做后台逻辑(比如读取UI文件配置、生成界面截图等),不需要调用
app.exec_()即可正常调用组件的所有非交互方法。 - 该方案兼容Maya 2017及以上所有内置PySide2的版本。
内容的提问来源于stack exchange,提问作者P067
相关产品推荐
相关产品推荐

