PyQt5 – QRadioButton小工具

  • Post category:Python

下面是详细讲解Python的PyQt5中QRadioButton小工具的完整使用攻略。

QRadioButton小工具

QRadioButton小工具是PyQt5中一个用于选项按钮的小工具。通常用于用户需要从一组互斥的选项中进行选择的情况下。

在PyQt5中,使用QRadioButton小工具需要借助QButtonGroup模块,QButtonGroup模块可以将一组QRadioButton小工具连接在一起,并确保他们同一时间内仅有一个QRadioButton小工具是选中状态。

创建一个QRadioButton小工具

我们可以使用QPushButton模块来创建一个QRadioButton小工具,示例如下:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayout

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 – QRadioButton'
        self.left = 100
        self.top = 100
        self.width = 320
        self.height = 100
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        vbox = QVBoxLayout()

        radio_pencil = QRadioButton("Pencil")
        vbox.addWidget(radio_pencil)

        radio_brush = QRadioButton("Brush")
        vbox.addWidget(radio_brush)

        radio_eraser = QRadioButton("Eraser")
        vbox.addWidget(radio_eraser)

        self.setLayout(vbox)

        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

在这个示例中,我们创建了三个QRadioButton小工具,分别是Pencil、Brush和Eraser,并将他们添加到一个垂直布局中。

QButtonGroup模块

当我们有一组QRadioButton小工具需要连接在一起的时候,我们可以使用QButtonGroup模块来实现。QButtonGroup模块可以将一个或多个QRadioButton小工具连接在一起,并确保他们同一时间内仅有一个QRadioButton小工具是选中状态。在选中一个QRadioButton小工具时,QButtonGroup模块会自动取消旧的选中状态,并保留新的选中状态。

下面是一个使用QButtonGroup模块实现的示例:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayout, QButtonGroup

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 – QRadioButton'
        self.left = 100
        self.top = 100
        self.width = 320
        self.height = 100
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        vbox = QVBoxLayout()

        self.groupbox = QButtonGroup()

        radio_pencil = QRadioButton("Pencil")
        vbox.addWidget(radio_pencil)
        self.groupbox.addButton(radio_pencil)

        radio_brush = QRadioButton("Brush")
        vbox.addWidget(radio_brush)
        self.groupbox.addButton(radio_brush)

        radio_eraser = QRadioButton("Eraser")
        vbox.addWidget(radio_eraser)
        self.groupbox.addButton(radio_eraser)

        self.groupbox.buttonClicked.connect(self.on_button_clicked)

        self.setLayout(vbox)

        self.show()

    def on_button_clicked(self, id):
        print("Button '{}' clicked".format(self.groupbox.button(id).text()))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

在这个示例中,我们将三个QRadioButton小工具连接在一起,并将他们添加到一个垂直布局中。QButtonGroup模块的addButton方法可以将QRadioButton小工具添加到一个组中。同时我们创建了一个名为groupbox的组,将三个QRadioButton小工具添加到了这个组中。最后将组中每个按钮的buttonClicked信号连接到on_button_clicked槽中。

当一个QRadioButton小工具被选中时,on_button_clicked槽将会被调用,并且会打印出被选中的按钮文本。

希望这份攻略能够帮助您使用PyQt5中的QRadioButton小工具。