我创建了一个按钮,当它点击时,它会显示一个弹出菜单,显示与persp相机一起创建的摄像机列表(顶部,前部,侧面摄像头将不会显示)
虽然它似乎有用,但是当我创建另一个新相机时,我收到此错误,引用# TypeError: Too many objects or values. #
并指向cmds.popupMenu(a)
有没有更好的方法来纠正它?
class orientCameraUI(QDialog):
def __init__(self, parent=None):
super(orientCameraUI, self).__init__(parent)
self.resize(300,225)
self.initUI()
self.createConnections()
def initUI(self):
self.setWindowTitle('OrientControl UI')
self.getCurrentCamBtn = QPushButton('Get current CAM')
gridLayout = QGridLayout()
gridLayout.addWidget(self.getCurrentCamBtn, 0, 1)
self.setLayout(gridLayout)
def createConnections(self):
self.connect(self.getCurrentCamBtn, SIGNAL('clicked()'), self.getCurrentCam)
def getCurrentCam(self):
# createdCams - camera1, camera2 etc.
createdCams = cmds.ls(cameras = True, visible = True)
getPersp = cmds.ls("persp")
cmds.popupMenu( button=1 )
cmds.popupMenu(createdCams)
cmds.popupMenu(getPersp)
答案 0 :(得分:1)
在此处查看代码片段:
cmds.popupMenu( button=1 )
cmds.popupMenu(createdCams)
cmds.popupMenu(getPersp)
第一行创建一个弹出菜单。 (button=1
告诉它在用鼠标左键而不是默认的鼠标右键单击时打开。)
您尚未在菜单中添加任何菜单项。再次使用项目列表调用popupMenu
会尝试制作新的菜单,而不是新的项目。
相反,你想要的是menuItem
。
但是每个创建的凸轮需要一个不同的菜单项。您无法将相机列表传递到一个 menuItem
命令中。使用for
循环可以根据需要进行调整:
cmds.popupMenu(button=1) # creates the menu
for cam in createdCams: # loop over createdCams assigning to cam one at a time
cmds.menuItem(cam) # creates one menu item for cam
cmds.menuItem(getPersp) # create one menu item for persp
上的文档