python - Pyqt - QMenu 动态填充和点击

标签 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

最佳答案

不要直接使用 onFilmSet 作为连接的接收者,而是使用 lambda 函数以便传递额外的参数:

receiver = lambda film=film: self.onFilmSet(self, film)
self.connect(menuItem_Film, SIGNAL('triggered()'), receiver)

关于python - Pyqt - QMenu 动态填充和点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1464548/

相关文章:

xml - 无法将 TableLayout 拉伸(stretch)到屏幕宽度

matlab - 在 MATLAB GUI 中显示分析结果

Qt QGraphicsView 中心的一张背景图像

python - 根据其他键值对填充空白字典值

python - 查找二维数组是否是另一个二维数组的精确子数组?

java - 如何禁用 JTable 中的特定列

qt - 如何获取ListModel中特定项目的索引?

使用 AMQP (RabbitMQ) 作为 Apache Thrift RPC 传输层的 Python 库

python - 在 Python 中设计长链

c++ - Qt Widget 类的父级始终为 NULL