📅  最后修改于: 2023-12-03 14:45:50.523000             🧑  作者: Mango
PyQt5 中的 QActionGroup 是一个方便的类,用于管理一组 QAction 对象。通过 QActionGroup,可以确保同时只有一个 QAction 被选中,或者可以将多个 QAction 绑定到单个信号槽中。
可以使用以下代码创建一个 QActionGroup 对象:
action_group = QtWidgets.QActionGroup(parent)
其中 parent 参数为可选参数,用于指定父级 QWidget。
可以使用以下代码将 QAction 添加到 QActionGroup 中:
action_group.addAction(action)
其中 action 指向要添加的 QAction 对象。
可以使用以下代码设置 QActionGroup 中默认选中的 QAction:
action_group.setExclusive(True)
action_group.checkedAction().setChecked(True)
其中,setExclusive(True) 方法用于确保只有一个 QAction 被选中。checkedAction() 方法返回当前选中的 QAction 对象,setChecked(True) 方法将其设置为选中状态。
可以使用以下代码将多个 QAction 绑定到单个信号槽中:
action_group.triggered.connect(slot_function)
其中 slot_function 是要绑定的信号槽函数。
以下示例代码演示了如何使用 QActionGroup:
import sys
from PyQt5 import QtWidgets, QtGui
class Window(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
layout = QtWidgets.QVBoxLayout()
self.setLayout(layout)
label = QtWidgets.QLabel("Select a color:")
layout.addWidget(label)
action_group = QtWidgets.QActionGroup(self)
red_action = QtWidgets.QAction("Red", self)
red_action.setCheckable(True)
action_group.addAction(red_action)
blue_action = QtWidgets.QAction("Blue", self)
blue_action.setCheckable(True)
action_group.addAction(blue_action)
green_action = QtWidgets.QAction("Green", self)
green_action.setCheckable(True)
action_group.addAction(green_action)
action_group.setExclusive(True)
action_group.checkedAction().setChecked(True)
action_group.triggered.connect(self.color_changed)
def color_changed(self, action):
print("Selected color:", action.text())
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
在此示例中,我们创建了一个窗口,并向其中添加了一个 QLabel 和三个 QAction,每个 QAction 分别对应一个颜色。我们将这三个 QAction 组合成一个 QActionGroup,并将其设置为只能选中一个。当用户点击任何一个 QAction 时,程序将打印选中的颜色。