0

我有一个 UI,其中包含几个 QPushButton 和一个 QLineEdit,目前我无法“更新”这个 QMenu 中附加到 QPushButton 上的内容。所以假设,如果我的场景中已经有 2 个摄像头,并且当我执行我的 UI 时,通过按下这个 setCameraBtn,我将在列表中获得 2 个摄像头。但是,如果我创建一个 UI 尚未关闭的新相机,我如何让我的 QMenu 在新相机中读取,比如“实时更新”?

我尝试创建另一个函数,它重新读取场景中的摄像机并重新列出 camLs 以及类似于我在 createConnections 中编写的连接,但它似乎没有读取。

camLs = []

class orientCameraUI(QDialog):
    def __init__(self, parent=None):
        ...
        ...

    def initUI(self):
        ...
        ...

    def createConnections(self):
        self.connect(self.orientToCamBtn, SIGNAL('clicked()'), self.orientToCam)

    def camMenu(self):

        allCams = [cam for cam in cmds.listRelatives(cmds.ls(cameras=1),parent=1) if cam not in ['front','persp','side','top']]
        camLs.extend(allCams)

        menu = QMenu("menu", self.setCameraBtn)

        for item in camLs:
            menu.addAction(QAction(item, menu))
        self.setCameraBtn.setMenu(menu)

        menu.triggered.connect(self._camSelected)

    def _camSelected(self, action):
        self.currentCamTxt.setText(action.text())
4

1 回答 1

0

这可以通过触发 UI 来轻松完成,QThread该 UI 会定期调用更新相机方法,该方法检查场景中的当前相机并将它们与 UI 已经注册的相机进行比较。如果相机中有添加、更改或删除,则它会更新菜单以反映它​​。

另一种解决方案是使用scriptJob.

于 2014-10-06T15:47:52.663 回答