从qMenu选择中抓取文本

时间:2014-09-30 04:11:27

标签: python pyqt4 qmenu

我正在尝试获取qMenu中列出的选择,并根据qMenu中的用户选择 - camSelBtn,它会将选择显示在qLineEdit中 - currentCamTxt

然而,虽然我能够使菜单正常工作,但选择不起作用。

def camMenu(self):
    allCams = cmds.ls(type='camera', visible = 1)
    camLs = cmds.listRelatives(allCams, p=1)
    menu = QMenu("menu", self.camSelBtn)
    for n in camLs:
        menu.addAction(QAction(n, menu))
    self.camSelBtn.setMenu(menu)

def createConnections(self):
    self.connect(self.setCameraBtn, SIGNAL('clicked()'), self.setCamera)

def setCamera(self):
    for sel in self.camMenu.menu():
        self.currentCamTxt.setText()

2 个答案:

答案 0 :(得分:0)

好的,我已经设法通过添加更多东西找到了

def camMenu(self):

    # -- Same stuff as I have written

    menu.triggered.connect(self._camSelected)

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

非常感谢,如果有更好的答案,而不是这个:)或者,它的编码方式与我在我的问题中发布的方式类似。

如果我尝试将triggered放入createConenctions

,我仍然无法获得任何结果

答案 1 :(得分:0)

新款式信号插槽更易于使用。

def camMenu(self):
    menu = QMenu()
    # menu.hovered.connect(lambda name="MainMenu": self.setCamera(name))
    for n in camLs:
        action = QAction(QIcon(), n, None)
        action.hovered.connect(lambda name=n: self.setCamera(name))
        # action.triggered.connect(lambda name=n: self.setCamera(name))

def setCamera(self, name):
    self.currentCamTxt.setText(name)

...如果您只是设置文本值,则不需要setCamera方法。

action.hovered.connect(lambda name=n: self.currentCamTxt.setText(name))