📜  PyQt5 – QActionGroup(1)

📅  最后修改于: 2023-12-03 14:45:50.523000             🧑  作者: Mango

PyQt5 - QActionGroup

PyQt5 中的 QActionGroup 是一个方便的类,用于管理一组 QAction 对象。通过 QActionGroup,可以确保同时只有一个 QAction 被选中,或者可以将多个 QAction 绑定到单个信号槽中。

创建 QActionGroup

可以使用以下代码创建一个 QActionGroup 对象:

action_group = QtWidgets.QActionGroup(parent)

其中 parent 参数为可选参数,用于指定父级 QWidget。

添加 QAction

可以使用以下代码将 QAction 添加到 QActionGroup 中:

action_group.addAction(action)

其中 action 指向要添加的 QAction 对象。

设置默认选中 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 时,程序将打印选中的颜色。