使用 PyQt 在 Maya 中可停靠 window
Dockable window in Maya with PyQt
我用的是Maya 2016 + PyQt4.8
我创建了一个简单的window。成功了。但我希望对话框可以停靠。
import sip
import maya.OpenMayaUI as mui
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import uic
import maya.cmds as cmds
#----------------------------------------------------------------------
def getMayaWindow():
ptr = mui.MQtUtil.mainWindow()
return sip.wrapinstance(long(ptr), QObject)
#----------------------------------------------------------------------
class SetTreeOnSplines(QDialog):
def __init__(self, parent=getMayaWindow()):
super(SetTreeOnSplines, self).__init__(parent)
uic.loadUi('X:/tools/Maya/windows/2016/python/setTree.ui', self)
#----------------------------------------------------------------------
# window
def setTree():
formCollect = SetTreeOnSplines()
formCollect.show()
#----------------------------------------------------------------------
# MAIN
setTree()
如何使用 PyQt 修改脚本使对话框可停靠?
import sip
import maya.OpenMayaUI as mui
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import uic
import maya.cmds as cmds
windowTitle = "Set_Tree_On_Splines"
windowObject = "SetTreeOnSplinesWinObject"
#----------------------------------------------------------------------
def getMayaWindow():
ptr = mui.MQtUtil.mainWindow()
return sip.wrapinstance(long(ptr), QObject)
#----------------------------------------------------------------------
class SetTreeOnSplines(QDialog):
def __init__(self, parent=getMayaWindow()):
super(SetTreeOnSplines, self).__init__(parent)
uic.loadUi('X:/tools/Maya/windows/2016/python/setTree.ui', self)
self.setWindowTitle(windowTitle)
self.setObjectName(windowObject)
#----------------------------------------------------------------------
# window
def setTree():
if cmds.window(windowObject, q=True, exists=True):
print "Deleting ", windowObject
cmds.deleteUI(windowObject)
if cmds.dockControl( 'MayaWindow|'+windowTitle, q=True, ex=True):
print "Deleting ", 'MayaWindow|'+windowTitle
cmds.deleteUI( 'MayaWindow|'+windowTitle )
formCollect = SetTreeOnSplines()
cmds.dockControl( windowTitle, label=windowTitle.replace("_"," "), area='right', content=windowObject, allowedArea=['right', 'left'] )
#formCollect.show()
#----------------------------------------------------------------------
# MAIN
setTree()
我添加了两个变量(windowTitle
和 windowObject
),它们用于设置 window 标题和 window object 名称UI 已加载。
我还添加了检查以查看 window 和可停靠区域是否已经存在以便删除它们。
我用的是Maya 2016 + PyQt4.8
我创建了一个简单的window。成功了。但我希望对话框可以停靠。
import sip
import maya.OpenMayaUI as mui
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import uic
import maya.cmds as cmds
#----------------------------------------------------------------------
def getMayaWindow():
ptr = mui.MQtUtil.mainWindow()
return sip.wrapinstance(long(ptr), QObject)
#----------------------------------------------------------------------
class SetTreeOnSplines(QDialog):
def __init__(self, parent=getMayaWindow()):
super(SetTreeOnSplines, self).__init__(parent)
uic.loadUi('X:/tools/Maya/windows/2016/python/setTree.ui', self)
#----------------------------------------------------------------------
# window
def setTree():
formCollect = SetTreeOnSplines()
formCollect.show()
#----------------------------------------------------------------------
# MAIN
setTree()
如何使用 PyQt 修改脚本使对话框可停靠?
import sip
import maya.OpenMayaUI as mui
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import uic
import maya.cmds as cmds
windowTitle = "Set_Tree_On_Splines"
windowObject = "SetTreeOnSplinesWinObject"
#----------------------------------------------------------------------
def getMayaWindow():
ptr = mui.MQtUtil.mainWindow()
return sip.wrapinstance(long(ptr), QObject)
#----------------------------------------------------------------------
class SetTreeOnSplines(QDialog):
def __init__(self, parent=getMayaWindow()):
super(SetTreeOnSplines, self).__init__(parent)
uic.loadUi('X:/tools/Maya/windows/2016/python/setTree.ui', self)
self.setWindowTitle(windowTitle)
self.setObjectName(windowObject)
#----------------------------------------------------------------------
# window
def setTree():
if cmds.window(windowObject, q=True, exists=True):
print "Deleting ", windowObject
cmds.deleteUI(windowObject)
if cmds.dockControl( 'MayaWindow|'+windowTitle, q=True, ex=True):
print "Deleting ", 'MayaWindow|'+windowTitle
cmds.deleteUI( 'MayaWindow|'+windowTitle )
formCollect = SetTreeOnSplines()
cmds.dockControl( windowTitle, label=windowTitle.replace("_"," "), area='right', content=windowObject, allowedArea=['right', 'left'] )
#formCollect.show()
#----------------------------------------------------------------------
# MAIN
setTree()
我添加了两个变量(windowTitle
和 windowObject
),它们用于设置 window 标题和 window object 名称UI 已加载。
我还添加了检查以查看 window 和可停靠区域是否已经存在以便删除它们。