PyQt5:QAction函数可以通过QPushButton触发吗
PyQt5: Can QAction function be triggered via QPushButton
我创建了一个右键单击菜单功能,其中所有右键单击功能都链接到一个 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 的一般(和首选)用法是 做某事 当他们发出 triggered()
信号时。
这允许保持单个 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
我创建了一个右键单击菜单功能,其中所有右键单击功能都链接到一个 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 的一般(和首选)用法是 做某事 当他们发出 triggered()
信号时。
这允许保持单个 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