Nachtwache
Nachtwache

Reputation: 103

context menu by left click

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

Answers (1)

eyllanesc
eyllanesc

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

Related Questions