我有一个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())
答案 0 :(得分:0)
这可以通过触发QThread
而不是定期调用更新摄像头方法的UI来轻松完成,该方法检查场景中的当前摄像头并将其与UI已经注册的摄像头进行比较。如果相机中有添加,更改或删除,则会更新菜单以反映它。
另一种解决方案是使用scriptJob
。