嗯,我想在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线,但仍然无法正常工作,我需要的方式
切换到回答格式:
当前的代码会更好,如果你不依赖于硬编码的名字:
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指出,上述不会代码的工作 - 我已经更新了样品,以指示未来的读者的利益问题。
嗯,这是我做完:
第一部分是相同的
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)