首页 PyQt5教程 QRadioButton单选按钮控件API方法setChecked()、isChecked()、setText()、text()和信号toggled()详解
pay pay
教程目录

QRadioButton单选按钮控件API方法setChecked()、isChecked()、setText()、text()和信号toggled()详解

日期: 四月 25, 2023, 8:57 a.m.
栏目: PyQt5教程
阅读: 237
作者: Python自学网-村长

摘要: QRadioButton是用于创建单选按钮的控件。每个单选按钮可以与其他单选按钮组合在一起,从而形成一个单选框组。用户只能选择组中的一个选项。

QRadioButton是用于创建单选按钮的控件。每个单选按钮可以与其他单选按钮组合在一起,从而形成一个单选框组。用户只能选择组中的一个选项。

QRadioButton继承自QAbstractButton,因此它继承了QAbstractButton的所有方法和信号。此外,QRadioButton还有一些独有的方法和信号。下面是QRadioButton的一些常用API及其说明:

常用方法:

  • setChecked(bool checked): 设置单选按钮的选中状态。如果checked为True,则选中单选按钮,否则不选中
  • isChecked() -> bool: 返回单选按钮的选中状态。如果单选按钮被选中,返回True,否则返回False
  • setText(str text): 设置单选按钮的文本标签
  • text() -> str: 返回单选按钮的文本标签

常用信号:

toggled(bool checked): 单选按钮的选中状态发生变化时,发出此信号。如果单选按钮被选中,则checked为True,否则为False。

一、QRadioButton单选按钮控件API方法

下面是一个简单的演示程序,展示如何使用QRadioButton创建单选框组,并根据用户的选择执行相应的操作:

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


class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        # 创建三个单选按钮,并组合在一起形成单选框组
        self.radio1 = QRadioButton('Option 1')
        self.radio2 = QRadioButton('Option 2')
        self.radio3 = QRadioButton('Option 3')
        self.radio1.setChecked(True)
        self.radio1.toggled.connect(self.on_radio_toggled)
        self.radio2.toggled.connect(self.on_radio_toggled)
        self.radio3.toggled.connect(self.on_radio_toggled)

        # 显示用户选择的选项
        self.result_label = QLabel('You selected: Option 1')

        # 将单选按钮和标签添加到垂直布局中
        layout = QVBoxLayout()
        layout.addWidget(self.radio1)
        layout.addWidget(self.radio2)
        layout.addWidget(self.radio3)
        layout.addWidget(self.result_label)

        self.setLayout(layout)
        self.setWindowTitle('QRadioButton Example')

    def on_radio_toggled(self, checked):
        # 显示用户选择的选项
        if self.radio1.isChecked():
            self.result_label.setText('You selected: Option 1')
        elif self.radio2.isChecked():
            self.result_label.setText('You selected: Option 2')
        elif self.radio3.isChecked():
            self.result_label.setText('You selected: Option 3')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec_())

运行该程序,会创建一个带有三个单选按钮的窗口。当用户选择某个选项时,程序会显示用户选择的选项。程序中的on_radio_toggled方法是单选按钮的toggled信号的槽函数,每当用户选择一个不同的选项时,此方法会被调用,更新结果标签的文本。

二、QRadioButton单选按钮控件信号详解

QRadioButton单选按钮控件有一个信号,即toggled()信号,当按钮被选中或取消选中时会发出该信号。toggled()信号有一个布尔类型参数,表示按钮是否被选中。我们可以利用该信号来实现单选按钮的互斥选择。

下面是一个简单的演示,有两个QRadioButton单选按钮控件,当其中一个按钮被选中时,另一个按钮就会被取消选中。

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

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.rbtn1 = QRadioButton('Option 1', self)
        self.rbtn1.move(50, 50)
        self.rbtn1.setChecked(True)

        self.rbtn2 = QRadioButton('Option 2', self)
        self.rbtn2.move(50, 80)

        vbox = QVBoxLayout()
        vbox.addWidget(self.rbtn1)
        vbox.addWidget(self.rbtn2)

        self.setLayout(vbox)

        self.rbtn1.toggled.connect(self.onRadioButtonClicked)
        self.rbtn2.toggled.connect(self.onRadioButtonClicked)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QRadioButton')
        self.show()

    def onRadioButtonClicked(self):
        sender = self.sender()
        if sender.isChecked():
            print(sender.text() + ' is selected')
        else:
            print(sender.text() + ' is deselected')

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

在上面的代码中,我们创建了两个QRadioButton单选按钮控件,分别为'Option 1'和'Option 2'。在initUI()方法中,我们使用了一个垂直布局管理器来放置这两个单选按钮控件。默认情况下,'Option 1'按钮被选中。

我们通过连接toggled()信号和onRadioButtonClicked()方法来实现按钮的互斥选择。在onRadioButtonClicked()方法中,我们使用sender()方法获取信号源,判断按钮是否被选中,并打印相应的信息。

部分文字内容为【Python自学网】原创作品,转载请注明出处!视频内容已申请版权,切勿转载!
回顶部