【问题标题】:QDialog module error in Maya 2017Maya 2017 中的 QDialog 模块错误
【发布时间】:2017-09-21 02:46:30
【问题描述】:

我的问题是关于我在 Maya 2017 中遇到的 QDialog 模块错误。

我正在使用 Maya 2017 来学习在 Maya 2015 中演示的 PyQt for Maya 课程。我安装了 Qt.py 希望简化代码并避免 PyQt4 与 PyQt5 或 PySide 与 PySide2 之间的混淆。

所以,当我这样做时

print Qt 

我在脚本编辑器中得到以下信息,因此假设一切正常。

<module 'Qt' from 'C:/Users/chuang/Documents/maya/2017/scripts\Qt.pyc'> 

但是,当我在 Maya 2015 中按照以下成功拉出一个空窗口的演示时:

import Qt.QtCore as qc
import Qt.QtGui as qg
dialog = qg.QDialog()
dialog.show()

我在 Maya 2017 中做了同样的事情并收到以下错误消息:

# Error: AttributeError: file <maya console> line 4: 'module' object has no attribute 'QDialog' #  

我在这里错过了什么吗(希望不是错字:))?

如果我这样做,我可以让它在 Maya 2017 中工作的唯一方法是:

import Qt.QtWidgets as qw
import Qt.QtCore as qc
import Qt.QtGui as qg

dialog = qw.QDialog()
dialog.show()

但我不明白它为什么起作用。

【问题讨论】:

  • 看起来从 Qt4 升级到 Qt5。除了跟上文档,您无能为力。
  • 是的,我知道自 Maya 2017 以来 Qt4 升级到 Qt5,这就是为什么我将 Qt.py 作为分层安装,希望能够使用任何 PyQt 库。似乎 QDialog 在 PyQt5 中的 QtWidgets 下,这可能解释了为什么它对我不起作用尝试通过 QtGui 调用它。显然,它通过 QtGui 在 Maya 2015 (PyQt4) 中工作。

标签: python qt pyqt maya


【解决方案1】:

在 Maya 2017 和 Maya 2018 中,从QtGui 模块中取出了一堆东西,而是放在了新的QtWidgets 模块中。所以你是对的,它现在可以通过QtWidgets 工作。

import PySide2.QtWidgets as qw
import PySide2.QtCore as qc
import PySide2.QtGui as qg

dialog = qw.QDialog()
dialog.show()

阅读 Fredrik Averpil 关于PySide2 的精彩帖子:Dealing with Maya 2017 and PySide2

【讨论】:

  • 啊..我明白了。非常感谢安迪。肯定会阅读 Fredrik 的帖子。干杯。
猜你喜欢
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
相关资源
最近更新 更多