将项目/操作添加到pyqtgraph PlotWidget上下文菜单

4
我是新手,正在学习Python和PyQt5/PyQtGraph。我尝试使用下面的代码向PlotWidget的上下文菜单中添加一个操作/项目。New_Item出现在上下文菜单中“查看全部”项的上方而不是其上面(我有图片,但作为新用户,不允许发布它:-()。我认为我正在添加一个新的上下文菜单(而不是访问默认的上下文菜单并向其添加内容)。我需要指导弄清楚我做错了什么。提前感谢您的帮助!
from PyQt5 import QtWidgets
import pyqtgraph as pg
    
class Plot(pg.PlotWidget):
           
    def contextMenuEvent(self, event):
        menu = QtWidgets.QMenu(self)
        someAction = menu.addAction('New_Item')
    
        res = menu.exec_(event.globalPos())
        if res == someAction:
            print('Hello')
    
if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    plot = Plot()
    plot.show()
    sys.exit(app.exec_())][1]
1个回答

0
你的代码救了我的一天!我也对如何创建自定义上下文菜单感到困惑。非常感谢!
如果你还在解决这个问题,
class Plot(pg.PlotWidget):

    def __init__(self):
        super().__init__()
        self.setMenuEnabled(False)

    def contextMenuEvent(self, event):
        menu = QtWidgets.QMenu(self)
        someAction = menu.addAction('New_Item')

        res = menu.exec_(event.globalPos())
        if res == someAction:
            print('Hello')


if __name__ == '__main__':
    import sys

    app = QtWidgets.QApplication(sys.argv)
    plot = Plot()
    plot.show()
    app.exec_()

使用setMenuEnabled(False)来禁用默认的上下文菜单。它对你自定义的上下文菜单没有任何影响,一切都正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接