右键单击上下文菜单

时间:2020-06-25 00:05:12

标签: python pyside2

我正在工作一个上下文菜单,该菜单由鼠标右键单击按钮触发。我希望它由左键触发。

1 个答案:

答案 0 :(得分:1)

解决方案是检测按下鼠标时的左键单击并创建上下文菜单:

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()