当我右键点击桌子时,我打开了一个菜单,我想获得我点击的动作名称。问题是我在循环中创建动作。基本上每个动作都将右键单击的项添加到文件(播放列表)。所以为了添加项目我需要知道在哪里。
def menu(self, event):
self.menu_table = QtWidgets.QMenu(self.tableWidget)
self.submenu = QtWidgets.QMenu("Add to a playlist")
list = os.listdir("playlists")
for i in list:
self.submenu.addAction(i)
self.submenu.triggered.connect(MyFunction(ItemClicked))
self.menu_table.addMenu(self.submenu)
self.menu_table.exec_(self.tableWidget.mapToGlobal(event))
答案 0 :(得分:3)
您的上下文菜单处理程序应如下所示:
def menu(self, pos):
menu = QtWidgets.QMenu()
submenu = menu.addMenu("Add to a playlist")
for filename in os.listdir("playlists"):
submenu.addAction(filename)
action = menu.exec_(self.mapToGlobal(pos))
if action is not None:
print(action.text())
MyFunction(action)
答案 1 :(得分:0)
如上所述,菜单的exec调用返回所选操作。最简单的方法是使用QAction.setData将所需信息存储到每个操作中。这是一个QVariant,所以你几乎可以存储任何东西。然后,在“exec”调用的结果中,您使用所选操作的QAction.data来取回值。 (对不起,如果我的语法不正确......我不太了解Python。)