弹出菜单和menuItem显示项目列表

时间:2014-08-12 08:47:18

标签: python maya

我创建了一个按钮,当它点击时,它会显示一个弹出菜单,显示与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)

1 个答案:

答案 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

请参阅popupMenumenuItem

上的文档