Pyqt - QMenu动态填充并单击

cra*_*nny 6 python user-interface qt pyqt

我需要知道我在动态生成的菜单系统中点击了哪个项目.我只想知道我点击了什么,即使它只是一个字符串表示.

def populateShotInfoMenus(self):
    self.menuFilms = QMenu()
    films = self.getList()

    for film in films:
        menuItem_Film = self.menuFilms.addAction(film)
        self.connect(menuItem_Film, SIGNAL('triggered()'), self.onFilmSet)
        self.menuFilms.addAction(menuItem_Film)

def onFilmRightClick(self, value):
    self.menuFilms.exec_(self.group1_inputFilm.mapToGlobal(value))

def onFilmSet(self, value):
    print 'Menu Clicked ', value
Run Code Online (Sandbox Code Playgroud)

Aar*_*lla 11

而不是onFilmSet直接用作连接的接收器,使用lambda函数,以便您可以传递其他参数:

receiver = lambda film=film: self.onFilmSet(self, film)
self.connect(menuItem_Film, SIGNAL('triggered()'), receiver)
Run Code Online (Sandbox Code Playgroud)