方法一:
from PyQt5.Qt import * import sys import math app=QApplication(sys.argv) win=QWidget() win.resize(500,500) win.setWindowTitle("右击发射信号") win.setWindowIcon(QIcon("D:\ICO\ooopic_1545207573.ico")) def show_menu(point): menu=QMenu(win) open_recent_menu=QMenu(menu)#新建菜单 open_recent_menu.setTitle("最近打开的") new_action=QAction(QIcon("D:\ICO\ooopic_1558312421.ico"),"新建",menu)#新建菜单项 new_action.triggered.connect(lambda:print("新建")) open_action=QAction(QIcon("D:\ICO\ooopic_1552382292.ico"),"打开",menu)#新建菜单项 open_action.triggered.connect(lambda:print("打开")) exit_action=QAction(QIcon("D:\ICO\ooopic_1559523252.ico"),"退出",menu)#新建菜单项 exit_action.triggered.connect(lambda:print("退出")) file_action=QAction("Python-GUI编程-PyQt5") file_action.triggered.connect(lambda:print("Python-GUI编程-PyQt5"))#新建菜单项 menu.addAction(new_action)#添加菜单项 menu.addAction(open_action)#添加菜单项 open_recent_menu.addAction(file_action)#添加菜单项 menu.addMenu(open_recent_menu)#添加含有子菜单项的 menu.addSeparator()#添加分隔线 menu.addAction(exit_action)#添加菜单项 dest_point=win.mapToGlobal(point) menu.exec_(dest_point) win.setContextMenuPolicy(Qt.CustomContextMenu) win.customContextMenuRequested.connect(show_menu) win.show() sys.exit(app.exec_())
方法二:
from PyQt5.Qt import * import sys import math class Window(QWidget): def contextMenuEvent(self,evt):#连接菜单事件 menu=QMenu(self) open_recent_menu=QMenu(menu) open_recent_menu.setTitle("近最打开") new_action=QAction(QIcon("D:\ICO\ooopic_1558312421.ico"),"新建",menu) new_action.triggered.connect(lambda:print("新建")) open_action=QAction(QIcon("D:\ICO\ooopic_1552382292.ico"),"打开",menu) open_action.triggered.connect(lambda:print("打开")) exit_action=QAction(QIcon("D:\ICO\ooopic_1559523252.ico"),"退出",menu) exit_action.triggered.connect(lambda:print("退出")) file_action=QAction("Python-GUI编程-PyQt5") file_action.triggered.connect(lambda :print("Python-GUI编程-PyQt5")) menu.addAction(new_action) menu.addAction(open_action) menu.addMenu(open_recent_menu) open_recent_menu.addAction(file_action) menu.addSeparator() menu.addAction(exit_action) menu.exec_(evt.globalPos()) app=QApplication(sys.argv) win=Window() win.setWindowTitle("右键菜单") win.resize(500,500) win.show() sys.exit(app.exec_())