1

好吧,我正在尝试在 Maya 中使用 Pyqt4 和 python 中的大纲,我的大纲与其他两个面板在 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)

我需要修改以使其每次都能正常工作

编辑:

我升级了我的代码,删除了一些行,但仍然无法按我需要的方式工作

4

2 回答 2

0

好吧,这就是我完成的工作:

第一部分是一样的

    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“翻译”为maya,以便能够使用任何额外的代码分配布局

    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)

将 Maya 小部件转换为 QWidget

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

最后将小部件添加到我的布局中

    self.outLayout.addWidget(self.outPanel)
于 2013-06-03T14:58:46.667 回答
0

切换回答格式:

如果您不依赖硬编码名称,当前代码会更好:

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")

看起来多余 - 这是故意的吗?这是试图为大纲做父母的遗留物吗?因为 p= 关键字应该为你做父母。

潜伏者更新

正如 OP 指出的那样,上面的代码不会工作 - 我已经更新了示例以指示问题,以使未来的读者受益。

于 2013-05-29T17:28:55.683 回答