Reputation: 103
I am working a a context menu that is triggered by right mouse click over a button. I want it to be triggered by left click.
Upvotes: 1
Views: 901
Reputation: 243897
The solution is to detect the left click when pressing the mouse and create a context menu:
from PySide2 import QtCore, QtWidgets
class Dialog(QtWidgets.QDialog):
def mousePressEvent(self, event):
super().mousePressEvent(event)
if event.button() == QtCore.Qt.LeftButton:
p = self.mapToGlobal(event.pos()) # or QtGui.QCursor.pos()
menu = self.create_menu_contextual()
action = menu.exec_(p)
if action is not None:
print(action.text())
def create_menu_contextual(self):
menu = QtWidgets.QMenu()
menu.addAction("Action1")
menu.addAction("Action2")
return menu
def main():
import sys
app = QtWidgets.QApplication(sys.argv)
w = Dialog()
w.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
Upvotes: 2