我在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()
非常感谢, 罗马