方式1
class MainModule(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__(parent=None)
self.setupUi(self)
# 允许出现菜单栏
self.tableWidget.setContextMenuPolicy(Qt.CustomContextMenu)
# 对空间添加右键菜单栏处理
self.tableWidget.customContextMenuRequested.connect(self.right_menu)
def right_menu(self):
# 创建菜单栏
menu = QMenu(self.tableWidget)
menu.addAction("排序")
# 菜单栏点击函数处理
menu.triggered.connect(self.right_menu_triggered)
# 菜单栏出现的位置
menu.exec_(QCursor.pos())
def right_menu_triggered(self, act):
print('xxxxxxxxx', act.text())
注: 部分代码以省略
效果图
方式2
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QMenu
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('右键菜单示例')
self.show()
def contextMenuEvent(self, event):
# 创建右键菜单
menu = QMenu(self)
newAct = menu.addAction("新建")
openAct = menu.addAction("打开")
quitAct = menu.addAction("退出")
# 显示右键菜单,并获取用户选择的操作
action = menu.exec_(self.mapToGlobal(event.pos()))
# 根据用户选择的操作进行相应的处理
if action == quitAct:
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())