PyQt 的动作组(QActionGroup)

2019-08-14 17:37:32 浏览数 (1)

动作组(QActionGroup),是用于管理多个可选型动作(checkable QAction)的类,它可以保证组中所有的动作只要有一个“开”,则其他的所有动作都为"关"。

在讲解QActionGroup的用法之前,先讲解上一篇提到的QAction的创建的一种封装方法。

def createAction(self,text,icon=None,checkable=False,slot=None,tip=None,shortcut=None): action = QAction(text,self) if icon is not None: action.setIcon(QIcon(icon)) if checkable: action.setCheckable(True)#可切换 if slot is not None: action.toggled.connect(slot) else: if slot is not None: action.triggered.connect(slot) if tip is not None: action.setToolTip(tip)#工具栏提示 action.setStatusTip(tip)#状态栏提示 if shortcut is not None: action.setShortcut(shortcut)#快捷键 return action

自定义好上述方法后,就可以简洁地创建QAction:

#文本左对齐动作 self.actionTextLeft = self.createAction("textleft","textleft.png",True,self.textLeft,"文本左对齐",None) #文本居中对齐动作 self.actionTextCenter = self.createAction("textleft","textcenter.png",True,self.textCenter,"文本居中对齐",None) #文本右对齐动作 self.actionTextRight = self.createAction("textright","textright.png",True,self.textRight,"文本右对齐",None)

现在,用于动作组的三个动作已经创建完毕,就可以创建QActionGroup并向其添加QAction:

#文本对齐 动作组,保证只有一个动作为“开” textAlignmentGroup = QActionGroup(self)# self is parent textAlignmentGroup.addAction(self.actionTextLeft) textAlignmentGroup.addAction(self.actionTextCenter) textAlignmentGroup.addAction(self.actionTextRight)

还需设定组中的某一个动作为“开”:

self.actionTextLeft.setChecked(True)#动作组中需设定某一个动作为开

最后就可以往工具条或者菜单添动作组中的动作了:

#依然是分别添加动作(工具条没有添加动作组的方法) editToolbar.addAction(self.actionTextLeft) editToolbar.addAction(self.actionTextCenter) editToolbar.addAction(self.actionTextRight)

0 人点赞