在Nuke PyQt

时间:2018-11-15 02:15:53

标签: python panel edit access nuke

我在Nuke中创建了一个注册面板,我试图通过在另一个Qt窗口中按一个按钮来修改其内容。

面板使用以下代码:

import nuke

try:
  ## < Nuke11
    import PySide.QtGui as QtGui
    import PySide.QtCore as QtCore

except:
  ## >= Nuke11
    import PySide2.QtCore as QtCore
    import PySide2.QtGui as QtGui
    import PySide2.QtWidgets as QtGui
    from PySide2.QtWidgets import QWidget as QWidget


class Example(QtGui.QWidget):
    def __init__(self):
        super(Example,self).__init__()
        self.comboBox = QtGui.QComboBox()
        self.comboBox.addItems(['Item 1','Item 2','Item 3','Item 4'])


        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.comboBox)

pane = nuke.getPaneFor("Example.panel")
panels.registerWidgetAsPanel('Example', 'Example',"", True).addToPane(pane)

现在,我要打开另一个使用其他工具的窗口。我正在尝试在两个工具之间建立桥梁。我想通过在新窗口中按一个按钮来修改面板中ComboBox的值。

这是窗口的代码:

import nuke
try:
  ## < Nuke11
    import PySide.QtGui as QtGui
    import PySide.QtCore as QtCore

except:
  ## >= Nuke11
    import PySide2.QtCore as QtCore
    import PySide2.QtGui as QtGui
    import PySide2.QtWidgets as QtGui
    from PySide2.QtWidgets import QWidget as QWidget


def Panel():
    class myPanel(QtGui.QWidget):
        def __init__(self):
            super(myPanel, self).__init__()
            self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
            self.setFixedWidth(520)
            self.setFixedHeight(100)
            layout = QtGui.QVBoxLayout(self)

            Button = QtGui.QPushButton('Use Item 4')
            Button.clicked.connect(self.modifyPanel)

            layout.addWidget(Button)

        def modifyPanel(self):
            print ''
            #This is where I am stuck, how to access and modify the Panel

    myPanel = myPanel()
    myPanel.show()
Panel()

非常感谢, 罗马

0 个答案:

没有答案