pyqt5-窗口菜单栏和右键菜单
1、介绍
窗口菜单栏和右键菜单的实现过程中,存在很大程度的相似性,都会使用QMenu和QAction这两类对象。
2、窗口菜单栏
只有QMainWindow类的窗口才可以创建窗口菜单栏,而QWidget和其它窗口则不支持。
def __init__(self):
...
self.window: QMainWindow
menuBar = self.window.menuBar()
file = QMenu('文件', menuBar)
file.addAction('新建')
file.addAction('打开')
opt = QMenu('操作', menuBar)
opt.addAction('选择')
opt.addAction('切换')
menuBar.addMenu(file)
menuBar.addMenu(opt)
menuBar.triggered.connect(self.menuBar_triggered)
def menuBar_triggered(self, act: QAction):
if act.text() == '':
pass
3、右键菜单
基本上所有组件都支持右键菜单的实现。
from PyQt5.QtCore import Qt
def __init(self):
...
# 右键菜单
self.window.treeWidget.setContextMenuPolicy(Qt.CustomContextMenu)
self.window.treeWidget.customContextMenuRequested.connect(self.treeWidget_rightMenu)
def treeWidget_rightMenu(self, pos):
menu = QMenu(self.window.plainTextEdit)
menu.addAction('新建连接')
menu.triggered.connect(self.treeWidget_rightMenu_triggered)
menu.exec_(QCursor.pos())
def treeWidget_rightMenu_triggered(self, act: QAction):
if act.text() == '新建连接':
pass
- 注意Qt类的准确引入
- 实际上,右键菜单中由右键触发只是习惯而言,也可以基于单击左键或其它事件等形式触发菜单
from PyQt5.QtCore import Qt
def __init(self):
...
# 点击按钮,生成菜单
self.window.pushButton.clicked.connect(self.treeWidget_rightMenu)
def treeWidget_rightMenu(self, pos=None):
menu = QMenu(self.window)
menu.addAction('新建连接')
menu.triggered.connect(self.treeWidget_rightMenu_triggered)
menu.exec_(QCursor.pos())
def treeWidget_rightMenu_triggered(self, act: QAction):
if act.text() == '新建连接':
pass
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战