Обновлено: стало намного понятнее.
В следующих фрагментах кода, использующих виджеты Maya через pymel
, справа от командной строки есть выделение ошибки.
import pymel.core as pm
def raiseError():
pm.select("ooxx") # ooxx doesn't exist
print "Something after the exception."
class pymelWindow(object):
def __init__(self):
self.mainWin = pm.window("test")
with self.mainWin:
mainForm = pm.formLayout()
with mainForm:
btn = pm.button(label='show error',command=pm.Callback(raiseError))
mainForm.redistribute()
def show(self):
self.mainWin.show()
win = pymelWindow()
win.show()
Здесь прикреплен снимок Maya 2011 (такая же проблема в Maya 2014) с выделением ошибки (красным).
и вот трассировка стека:
# Error: Maya Node does not exist: u'ooxx'
# Traceback (most recent call last):
# File "/usr/autodesk/maya2014-x64/lib/python2.7/site-packages/pymel/internal/factories.py", line 778, in callback
# res = origCallback( *newargs )
# File "/usr/autodesk/maya2014-x64/lib/python2.7/site-packages/pymel/internal/factories.py", line 701, in __call__
# return self.func(*self.args, **self.kwargs)
# File "/dept/rdworks/drake/Desktop/pyqt_issues/testPyQtSpitError.py", line 119, in raiseError
# pm.select("ooxx")
# File "/usr/autodesk/maya2014-x64/lib/python2.7/site-packages/pymel/core/general.py", line 151, in select
# raise TypeError, msg
# MayaNodeError: Maya Node does not exist: u'ooxx' #
Однако, когда я переключаюсь на использование PyQt/PySide для виджетов со следующими фрагментами кода, справа от командной строки не появляется никакого видимого выделения ошибок! Кто-нибудь знает, как заставить версию PyQt/PySide иметь такое же поведение графического интерфейса?
import pymel.core as pm
from PyQt4 import QtGui
def raiseError():
pm.select("ooxx") # ooxx doesn't exist
print "Something after the exception."
class pyQtWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
# init our ui using the MayaWindow as parent
super(pyQtWindow, self).__init__(parent)
self.centralWidget = QtGui.QWidget(self)
self.setCentralWidget(self.centralWidget)
self.centralLayout = QtGui.QVBoxLayout()
self.centralWidget.setLayout(self.centralLayout)
self.errorBtn = QtGui.QPushButton('show error')
self.errorBtn.clicked.connect(raiseError)
self.centralLayout.addWidget(self.errorBtn)
win = pyQtWindow()
win.show()
# Traceback (most recent call last):
# File "/usr/autodesk/maya2014-x64/lib/python2.7/site-packages/pymel/internal/factories.py", line 701, in __call__
# return self.func(*self.args, **self.kwargs)
# File "/dept/rdworks/drake/Desktop/pyqt_issues/testPyQtSpitError.py", line 119, in raiseError
# pm.select("ooxx")
# File "/usr/autodesk/maya2014-x64/lib/python2.7/site-packages/pymel/core/general.py", line 151, in select
# raise TypeError, msg
# pymel.core.general.MayaNodeError: Maya Node does not exist: u'ooxx'
Something after the exception.
при использовании блока кода PyQt/PySide? - person Bleeding Fingers   schedule 07.12.2013Show Stack Trace
в редакторе скриптов? Правка-›Показать трассировку стека - person Bleeding Fingers   schedule 09.12.2013/usr/bin/maya2011-x64/...
, если вы не установили Maya2014 в этот каталог, это означает, что вы протестировали код на Maya2011. - person Bleeding Fingers   schedule 23.12.2013