更新 QMenu 中的内容'live'

2024-10-08 18:21:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个UI,其中包含几个QPushButton和一个QLineEdit,目前我很难“更新”这个QMenu中附加到QPushButton上的内容。 所以假设,如果我的场景中已经有两个摄影机,并且当我执行UI时,按这个集合camerabtn,我将得到列表中的两个摄影机。但是,如果我创建了一个新的摄像头,而用户界面还没有关闭,如何让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())

Tags: inselfuidefconnect场景parentmenu
1条回答
网友
1楼 · 发布于 2024-10-08 18:21:46

这可以通过触发QThread而不是周期性调用update camera方法的UI来轻松完成,该方法检查场景中的当前摄影机并将其与UI已注册的摄影机进行比较。如果它是一个更新的菜单,那么它会更新。在

另一个解决方案是使用^{}。在

相关问题 更多 >

    热门问题