У меня есть инструмент, который заполняет GUI источниками света в сцене Maya, и если пользователь переименовывает источник света в планировщике, я хотел бы, чтобы GUI отображал новое имя источника света.Я попытался настроить скриптJob для обнаружения события переименования, но пока он не работает.Что я делаю не так?
import maya.cmds as cmds
import os
import maya.OpenMayaUI as mui
from PySide2 import QtWidgets,QtCore,QtGui
import shiboken2
class widget():
def __init__(self):
self.lights = cmds.ls(type = "VRayLightRectShape")
def clearLayout(self):
layout = self.vertical_layout
if layout is not None:
while layout.count():
item = layout.takeAt(0)
widget = item.widget()
if widget is not None:
widget.setParent(None)
else:
self.clearLayout(item.layout())
def light_button_event(self, text):
print("this is the pressed button's label", text)
def populate_lights(self):
self.clearLayout()
for light in self.lights:
light_btn = QtWidgets.QPushButton(light)
light_btn.clicked.connect(partial(self.light_button_event, light))
self.vertical_layout.addWidget(light_btn)
def light_window(self):
windowName = "lights_palette"
if cmds.window(windowName,exists = True):
cmds.deleteUI(windowName, wnd = True)
pointer = mui.MQtUtil.mainWindow()
parent = shiboken2.wrapInstance(long(pointer),QtWidgets.QWidget)
self.window = QtWidgets.QMainWindow(parent)
self.window.setObjectName(windowName)
self.window.setWindowTitle(windowName)
self.mainWidget = QtWidgets.QWidget()
self.window.setCentralWidget(self.mainWidget)
self.vertical_layout = QtWidgets.QVBoxLayout(self.mainWidget)
self.populate_lights()
self.window.setAttribute(QtCore.Qt.WA_DeleteOnClose)
for light in self.lights:
job = self.myScriptJobID = cmds.scriptJob(p = windowName, nodeNameChanged=[light, self.populate_lights])
self.window.show()
w = widget()
w.light_window()