玛雅大纲在PyQt的不收费(Maya Outliner in Pyqt doesn't ch

2019-10-18 04:32发布

嗯,我想在Maya中使用大纲与PyQt4的和蟒蛇,我的大纲是在了QSplitter与其他两个面板,看起来代码是好的,但是当我运行有时会出现大纲代码,有时不会出现

这是我创建大纲代码:

self.outliner = QWidget()
self.outliner.setObjectName("outliner")
self.outLayout = QGridLayout()
self.outLayout.setContentsMargins(0, 0, 0, 0)
self.outLayout.setObjectName("outLayout")
self.outliner.setLayout(self.outLayout)

outL = cmds.outlinerPanel(mbv=False, p="outLayout")

cmds.control(out, edit=True, visible=True, parent="outLayout")

这是我怎么显示出来:

self.splitter1 = QSplitter()

self.splitter1.addWidget(self.list)

self.splitter1.addWidget(self.outliner)

我需要修改什么,使其工作,每次

编辑:

我升级我的代码,删除inecesaring线,但仍然无法正常工作,我需要的方式

Answer 1:

切换到回答格式:

当前的代码会更好,如果你不依赖于硬编码的名字:

self.outliner.setLayout(self.outLayout)
#snip#
# in ordinary maya / python usage you'd do this....
panelLayout = cmds.formLayout("panelLayout", parent=self.outLayout)
# but in your original sample self.Outlayout is not a maya widget but a QT one
# so it doesn't resolve down to a string...
# the line below is the usual idiom
outliner = cmds.outlinerPanel("out", mbv=False, p=panelLayout)

这样的控制者的真实名称将被使用,你用相同的名字流浪狗不太容易。 它仍然是删除流浪很好的做法 - 但它很难确定,而不使代码非常麻烦。

此外,该行:

cmds.control(out, edit=True, visible=True, parent="panelLayout")

看起来冗余 - 它是故意的吗? 它是一个企图父轮廓的lefttover? 因为P =关键字应该做你的养育你。

潜伏者更新

由于OP指出,上述不会代码的工作 - 我已经更新了样品,以指示未来的读者的利益问题。



Answer 2:

嗯,这是我做完:

第一部分是相同的

    self.outliner = QWidget()
    self.outliner.setObjectName("outliner")
    self.outLayout = QGridLayout()
    self.outLayout.setContentsMargins(0, 0, 0, 0)
    self.outLayout.setObjectName("outLayout")
    self.outliner.setLayout(self.outLayout)

然后我“翻译” PyQt的玛雅能够与任何额外的代码分配布局

    panel = mui.MQtUtil.fullName(long(sip.unwrapinstance(self.outLayout)))
    cmds.setParent(panel)
    if cmds.modelPanel("outL", exists=True):
        cmds.deleteUI("outL")
    outL = cmds.outlinerPanel(mbv=False)
    cmds.control(outL, edit=True, visible=True, p=panel)
    ptr = mui.MQtUtil.findControl(outL)

变换玛雅小部件一个QWidget

    self.outPanel = sip.wrapinstance(long(ptr), QObject)

最后加入了Widget到我的布局

    self.outLayout.addWidget(self.outPanel)


文章来源: Maya Outliner in Pyqt doesn't charge