Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过左键单击上下文菜单_Python_Pyside2 - Fatal编程技术网

Python 通过左键单击上下文菜单

Python 通过左键单击上下文菜单,python,pyside2,Python,Pyside2,我正在创建一个上下文菜单,通过鼠标右键单击按钮触发。我希望通过左键单击触发它。解决方案是在按下鼠标时检测左键单击并创建上下文菜单: from PySide2 import QtCore, QtWidgets class Dialog(QtWidgets.QDialog): def mousePressEvent(self, event): super().mousePressEvent(event) if event.button() == QtCor

我正在创建一个上下文菜单,通过鼠标右键单击按钮触发。我希望通过左键单击触发它。

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

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

如果你有“N”个问题,那么你必须创建“N”个帖子,请阅读并跳过这篇文章。这是一个令人困惑的问题,主要是因为没有问题,只有漫无边际的问题。您只是想让
B
D
显示在关联菜单中吗?给出上下文是好的,问一个直截了当的问题更好。@Nachtwache你必须尊重SO的规则,SO中的问题必须准确,否则你的问题就离题了,所以可以结束,因为它显然不好。@Nachtwache你现在应该可以问一个新问题了,为什么一个过于宽泛的问题会坚持它?@Nachtwache是的,这是一个宽泛的问题,就像说:我想要a,B,C,D,E,…,Z。你知道它们是3个独立的问题,因为你最初把它们分开了。您希望通过左键单击激活关联菜单,这与是否存在复选框或是否存在节无关。将“n”个独立问题放在一起不符合SO规则,因为这里的问题必须精确。你为什么不想提出其他问题呢?请使用
@username