2017-09-20 2 views
1

Meine Frage bezieht sich auf einen Fehler QDialog Modul I in Maya bekam 2017.QDialog Modulfehler in Maya 2017

Ich bin mit Maya 2017 eine PyQt für Maya Kurs zu folgen, die Demo-ed in Maya 2015 I ist installiert Qt.py hofft, den Code zu vereinfachen und die Verwirrung zwischen PyQt4 gegen PyQt5 oder PySide gegen PySide2 zu vermeiden.

Also, wenn ich

print Qt 

ich folgend in Skript-Editor erhalten, also davon ausgehen, alles gut ist.

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

Allerdings, wenn ich folge einer Demo, die erfolgreich ein leeres Fenster in Maya 2015 durch die unten zieht:

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

tat ich das gleiche in Maya 2017 und bekam die Fehlermeldung unter:

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

Vermisse ich hier etwas (hoffentlich kein Tippfehler :))?

Der einzige Weg, die ich bekommen kann es in Maya 2017 zu arbeiten, wenn ich tun:

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

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

Aber ich verstehe nicht, warum es funktioniert.

+0

Sieht so aus, als gäbe es ein Upgrade von Qt4 auf Qt5. Sie können nichts dagegen tun, als mit der Dokumentation Schritt zu halten. –

+0

Ja, mir ist seit Maya 2017 das Upgrade von Qt4 auf Qt5 bekannt, und deshalb habe ich Qt.py als Schicht installiert, in der Hoffnung, dass ich jede PyQt-Bibliothek verwenden kann. Scheint wie QDialog ist unter QtWidgets in PyQt5 und das erklärt wahrscheinlich, warum es nicht funktionierte für mich versuchen, es über QtGui zu nennen. Anscheinend funktionierte es in Maya 2015 (PyQt4) über QtGui. –

Antwort

0

In Maya 2017 und Maya 2018 wurde eine Menge Zeug aus dem Modul QtGui herausgenommen und stattdessen in das neue Modul QtWidgets gelegt. Du hast recht, es funktioniert jetzt über QtWidgets.

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

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

kühlen Beitrag über PySide2 von Fredrik Averpil lesen: Dealing with Maya 2017 and PySide2.

+0

ah .. ich verstehe. Vielen Dank Andy. Wird Fredriks Post sicherlich lesen. Prost. –