弹出菜单和菜单项显示项目列表
我创建了一个按钮,当点击这个按钮时,它会弹出一个菜单,显示已经创建的摄像头列表,还有一个透视摄像头(顶部、正面和侧面摄像头不会显示)。
虽然这个功能看起来能正常工作,但每当我创建一个新的摄像头时,就会出现一个错误,提示 # 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 个回答
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