evalDeferred で回避!
1
UI 系
2
ウィンドウ自体に対して deleteUI コマンド showWindow コマンド が実行された場合、Maya で致命的なエラーが発生しますする時がある。
そんなときは、
evalDeferred を使用して回避できる。
http://help.autodesk.com/view/MAYAUL/2017/JPN//?guid=GUID-C97BBDE6-A2E4-4C13-B1D9-79ACF55B0758
例
import maya.cmds as cmds
# from functools import partial
class UI(object):
@classmethod
def showUI(cls):
win = cls()
win.createUI()
return win
def __init__(self):
self.win = 'testUi'
def createUI(self, *args):
if cmds.window(self.win, q = True, ex = True):
# cmds.evalDeferred(lambda *args:cmds.deleteUI(self.win))
cmds.deleteUI(self.win)
cmds.window(self.win)
cmds.columnLayout(adj = True)
cmds.button(label = 'close ui', c = self.close) # partial(self.createUI)
cmds.button(label = 'reload ui', c = self.reload) # partial(self.createUI)
# cmds.showWindow(self.win)
cmds.evalDeferred(lambda *args:cmds.showWindow(self.win))
def reload(self, *args):
self.showUI()
print('reload done')
def close(self, *args):
cmds.evalDeferred(lambda *args:cmds.deleteUI(self.win))
print('close done')
if __name__ == '__main__':
print(u'{}.py: loaded as script file'.format(__name__))
UI.showUI()
else:
print(u'{}.py: loaded as module file'.format(__name__))
import maya.cmds as cmds
# from functools import partial
class UI(object):
def __init__(self):
self.win = 'testUi'
def createUI(self, *args):
if cmds.window(self.win, q = True, ex = True):
# cmds.evalDeferred(lambda *args:cmds.deleteUI(self.win))
cmds.deleteUI(self.win)
cmds.window(self.win)
cmds.columnLayout(adj = True)
cmds.button(label = 'close ui', c = self.close) # partial(self.close)
cmds.button(label = 'reload ui', c = self.reload) # partial(self.reload)
# cmds.showWindow(self.win)
cmds.evalDeferred(lambda *args:cmds.showWindow(self.win))
def reload(self, *args):
self.createUI()
print('reload done')
def close(self, *args):
cmds.evalDeferred(lambda *args:cmds.deleteUI(self.win))
print('close done')
if __name__ == '__main__':
print(u'{}.py: loaded as script file'.format(__name__))
UI().createUI()
else:
print(u'{}.py: loaded as module file'.format(__name__))