pyqt5-QAction动作组件
1、介绍
动作。这是QMenu添加的项,或者QMenuBar组件直接添加。
class QAction(__PyQt5_QtCore.QObject):
"""
QAction(parent: QObject = None)
QAction(str, parent: QObject = None)
QAction(QIcon, str, parent: QObject = None)
"""
def __init__(self, *__args):
pass
2、属性
AboutQtRole = 3
AboutRole = 4
ApplicationSpecificRole = 2
HighPriority = 256
Hover = 1
LowPriority = 0
NormalPriority = 128
NoRole = 0
PreferencesRole = 5
QuitRole = 6
TextHeuristicRole = 1
Trigger = 0
3、方法
text(self) -> str
- 获取文本,即动作项的显示字符串。返回类型str
setText(self, text: str)
- 设置文本,参数类型str
setVisible(self, a0: bool)
- 设置可见
setData(self, var: Any)
- 设置数据
data(self) -> Any
- 获取数据
setIcon(self, icon: QIcon)
- 设置图片
icon(self) -> QIcon
- 获取图片
menu(self) -> QMenu
- 事件触发时,基于触发的QAction调用该方法,无论是一级菜单下的QAction,还是二级菜单下的QAction,都是返回None
parent(self) -> QObject
- 获取父类组件
setCheckable(self, a0: bool)
- 设置是否可以有状态
isCheckable(self) -> bool
- 判断是否可以以设置状态
setChecked(self, a0: bool)
- 设置状态
isChecked(self) -> bool
- 获取选中状态
4、事件
- triggered: 点击时发射信号,( 最常用);
- hovered: 鼠标悬浮上空时发射该信号;悬浮移动时,多次触发
- toggled: 如果状态为选中,则checked为True,该参数会被发送;
- changed: 只要QAction状态发生改变就会发送,如多了个图标,换了文字等。
5、QAction和QMenu的父类组件
QAction可以基于parent方法获取其父类组件,一般来说都是QMenu。可以获取QMenu组件的title属性,即显示文本,在QAction的text存在重复时,辅助判断QAction所在位置。
QMenu组件也可以基于parent方法获取其父类组件,可能是QMenu,也可能是绑定菜单的组件。
def plainTextEdit_rightMenu(self, pos: QPoint=None):
menu = QMenu(self.window.plainTextEdit)
menu.addAction('执行')
menu.addAction('删除')
menu_a = QMenu('标题',menu)
menu_a.addAction('删除')
menu_b = QMenu('文章',menu)
menu_b.addAction('删除')
menu.addMenu(menu_a)
menu.addMenu(menu_b)
menu.triggered.connect(self.plainTextEdit_rightMenu_triggered)
menu.exec_(QCursor.pos())
def plainTextEdit_rightMenu_triggered(self, act: QAction):
menu: QMenu = act.parent()
if act.text() == '删除':
if menu.__class__ == PyQt5.QtWidgets.QMenu and menu.title() == '标题':
print('123')
elif menu.__class__ == PyQt5.QtWidgets.QMenu and menu.title() == '文章':
print('abc')