Pyqt中的Maya Outliner不charg

2024-09-30 05:28:00 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我尝试在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")

我是这样展示它的:

^{pr2}$

我每次都需要修改才能正常工作

编辑:

我升级了我的代码,删除了不必要的行,但仍然不能按我需要的方式工作


Tags: 代码self视图true面板pyqt4cmdsmaya
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“翻译”到maya,以便能够使用任何额外的代码来指定布局

^{pr2}$

将Maya小部件转换为QWidget

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

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

    self.outLayout.addWidget(self.outPanel)

切换到答案格式:

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

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)

这样就可以使用控件的真实名称,这样你就不太容易受到同名错误的攻击。删除错误仍然是一个很好的实践,但是如果不使代码变得非常繁琐,就很难确定。在

还有,这一行:

^{pr2}$

看起来多余-是故意的吗?这是否是一个试图成为大纲父对象的左撇子?因为p=关键字应该是为你做父母的。在

潜伏者更新

正如OP所指出的,上面的代码行不通——为了将来的读者,我已经更新了示例以指明问题所在。在

相关问题 更多 >

    热门问题