PyQt5:可以通过QPushButton触发QAction功能吗



我创建了一个右键单击菜单函数,其中所有右键单击函数都链接到一个QAction

例如:

self.contextMenu = QtWidgets.QMenu(self)
self.contextMenu.addAction(self.actionAdd_Data)
self.pushButton.customContextMenuRequested.connect(self.initContextMenu)
def initContextMenu(self, event):
action = self.contextMenu.exec_(self.pushButton.mapToGlobal(event))
if action == self.actionAdd_Data:
print("Do something")

我有可能模仿点击右键按钮吗?类似于pushButton.click((,但用于QAction。

我试过

self.pushButton2.clicked.connect(self.actionAdd_Data.trigger)

但什么也没发生。

有人能帮忙吗?谢谢

虽然使用QMenu.exec_()返回的操作对创建的菜单很有效"在飞行中";,QAction的一般(也是优选的(用法是当它们的CCD_ 2信号被发射时做一些事情

这允许保留一个始终执行其创建目的的QAction,同时可以将该操作添加到需要的任何位置(可以是菜单、工具栏,甚至键盘快捷键(,而无需不断检查是否触发了操作。

在以下示例中,addData()函数在从菜单激活时和单击someOtherButton时都会被调用。

self.actionAdd_Data = QAction('Add data', self)
self.actionAdd_Data.triggered.connect(self.addData)
self.contextMenu.addAction(self.actionAdd_Data)
# ...
self.someOtherButton.clicked.connect(self.actionAdd_Data.trigger)

def initContextMenu(self, pos):
self.contextMenu.exec_(self.pushButton.mapToGlobal(pos))
def addData(self):
# do something

最新更新