PyQt6第四章控件功能之4.2常用控件(4.2.5单选按钮:QRadioButton)

4.2.5单选按钮:QRadioButton

单选按钮属于QRadioButton 类,继承自 QAbstractButton 类。它提供了一组可供选择的包含文本标签按钮,用户可以选择其中一个选项。 单选钮是一种开关按钮,可以切换为开或者关,即checked或者unchecked。 QRadioButton 类中的常用方法如下:

setCheckable(逻辑值):设置按钮是否已经被选中,可以改变单选钮的选中状态,如果设置为True,则表示单选钮将保持已点击和释放状态

setChecked(逻辑值):返回单选钮的状态。返回值为True或False

isChecked():设置单选钮的显示文本

text():返回单选钮的显示文本

【例4.6】QRadioButton 单选按钮测试,测试如下:

import sys  # 导入Python的系统模块,用于访问与Python解释器交互或与其运行的环境交互的一些变量和函数。

from PyQt6.QtWidgets import *  # 从PyQt6.QtWidgets模块中导入所有类。PyQt6是一个用于创建图形用户界面(GUI)的Python库。


class MyWidget(QWidget):  # 定义一个名为MyWidget的类,它继承自QWidget类。QWidget是所有用户界面对象的基类。

    def __init__(self, parent=None):  # 定义MyWidget类的初始化方法,parent参数默认为None。

        super(MyWidget, self).__init__(parent)  # 调用父类QWidget的初始化方法,传入parent参数。

        self.setWindowTitle("RadioButton测试")  # 设置窗口的标题为"RadioButton测试"。

        self.rb1 = QRadioButton("南京大学")  # 创建一个QRadioButton对象,其显示的文本为"南京大学",并将其赋值给self.rb1。

        self.rb1.setChecked(True)  # 设置self.rb1(即"南京大学"这个单选按钮)为选中状态。

        self.rb1.toggled.connect(
            lambda: self.rbFunc(self.rb1))  # 当self.rb1的状态发生变化时(即被选中或取消选中),调用self.rbFunc方法并传入self.rb1作为参数。

        self.rb2 = QRadioButton("东南大学")  # 创建第二个QRadioButton对象,文本为"东南大学",并赋值给self.rb2。

        self.rb2.toggled.connect(lambda: self.rbFunc(self.rb2))  # 为self.rb2也设置状态变化时的回调函数。

        self.rb3 = QRadioButton("南京师范大学")  # 创建第三个QRadioButton对象,文本为"南京师范大学",并赋值给self.rb3。

        self.rb3.toggled.connect(lambda: self.rbFunc(self.rb3))  # 为self.rb3也设置状态变化时的回调函数。

        hLayout = QHBoxLayout()  # 创建一个水平布局对象,并赋值给hLayout。

        hLayout.addWidget(self.rb1)  # 将self.rb1(即"南京大学"单选按钮)添加到水平布局中。

        hLayout.addWidget(self.rb2)  # 将self.rb2(即"东南大学"单选按钮)添加到水平布局中。

        hLayout.addWidget(self.rb3)  # 将self.rb3(即"南京师范大学"单选按钮)添加到水平布局中。

        self.setLayout(hLayout)  # 将MyWidget的布局设置为刚刚创建的水平布局hLayout。

    def rbFunc(self, rb):  # 定义一个名为rbFunc的方法,它接受一个参数rb(代表一个单选按钮)。

        if rb.isChecked() == True:  # 判断传入的单选按钮rb是否被选中。

            print(rb.text())  # 如果被选中,则打印该单选按钮的文本内容。


if __name__ == '__main__':  # 判断这个脚本是否作为主程序运行,而不是被其他脚本导入。

    app = QApplication(sys.argv)  # 创建一个QApplication对象,这是所有PyQt应用程序都需要的。

    w = MyWidget()  # 创建一个MyWidget对象,即我们的窗口。

    w.show()  # 显示窗口。

    sys.exit(app.exec())  # 进入应用程序的主循环,等待用户的交互操作。当应用程序结束时,返回状态码并退出。

这段代码主要实现了一个简单的窗口应用程序,其中包含了三个单选按钮(QRadioButton),这些按钮被放置在一个水平布局(QHBoxLayout)中。

以下是代码中使用的布局和控件:

  1. 布局(Layout)

    • QHBoxLayout: 这是一个水平布局,它会将其包含的控件从左到右水平排列。
  2. 控件(Widgets)

    • QWidget: 这是所有用户界面对象的基类。
    • QApplication: 每一个PyQt6应用程序都需要一个QApplication对象。它管理应用程序级别的资源,比如初始化GUI环境。
    • QRadioButton: 单选按钮控件,用户可以通过点击来选择或取消选择。

说明:

1. 因为三个单选按钮在一个布局中,所以选择其中一个。初试第一个单选按钮选中:
self.rbl.setChecked(True)
 2.每个单选按钮的toggle信号均与槽函数rbFunc连接。使用lambda的方式源信号传递给槽函数,将单选按钮作为参数。

rbFunc函数检查单选按钮的状态,可获得选中的单选按钮。

关键语句的解释:

  1. self.setWindowTitle("RadioButton测试"): 设置窗口的标题为"RadioButton测试"。
  2. self.rb1 = QRadioButton ("南京大学"): 创建一个新的QRadioButton控件,其文本为"南京大学"。
  3. self.rb1.setChecked(True): 将"南京大学"这个单选按钮设置为默认选中状态。
  4. self.rb1.toggled.connect(lambda:self.rbFunc(self.rb1)): 当"南京大学"这个单选按钮的状态发生变化(被选中或取消选中)时,会调用rbFunc函数,并将该按钮作为参数传入。
  5. hLayout.addWidget(self.rb1): 将"南京大学"这个单选按钮添加到水平布局中。
  6. self.setLayout(hLayout): 将窗口的布局设置为前面创建的水平布局。
  7. def rbFunc(self,rb): 这是一个槽函数,当任何一个单选按钮的状态发生变化时,都会被调用。如果传入的单选按钮处于选中状态,则打印出该按钮的文本。
  8. app = QApplication(sys.argv): 创建一个QApplication对象,它是每一个PyQt6应用程序都需要的。
  9. w=MyWidget(): 创建一个MyWidget对象,即我们自定义的窗口。
  10. w.show(): 显示窗口。
  11. sys.exit(app.exec()): 进入应用程序的主事件循环,等待用户交互。当用户关闭窗口时,app.exec()返回,然后程序退出。

整体来说,这段代码的功能是创建一个窗口,窗口中包含三个水平排列的单选按钮,分别代表不同的大学。当用户点击任何一个单选按钮时,会在控制台输出该按钮的文本。

  • 32
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值