• Pyside6 QRadioButton



    QRadioButton单选框,QRadioButton是一个可以切换选中和未选中的控件,它的作用跟QCheckBox复选框一样,但是复选框可以实现多选多的功能,而单选框只能实现多选一的功能。
    QRadioButton都是默认开启了自动互斥功能,意味着属于同一个父部件的所有单选框都是相互排斥,也就是只能有一个单选框被选中。在实际应用中通常需要对单选框进行分组,以实现不同的功能。关于QRadioButton的更多资料可以参考下面的文档

    https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QRadioButton.html
    https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QAbstractButton.html

    QRadioButton使用

    QRadioButton分组

    在使用QRadioButton前需要对QRadioButton进行分组,我们可以利用QButtonGroup进行分组

    		btn1 = QButtonGroup(self) # 创建ButtonGroup
            btn2 = QButtonGroup(self) # 创建ButtonGroup
            btn3 = QButtonGroup(self) # 创建ButtonGroup
    
    
            # 将RadioBox1/2/3/4 划入组1
            btn1.addButton(self.ui.radioButton,1)
            btn1.addButton(self.ui.radioButton_2,1)
            btn1.addButton(self.ui.radioButton_3,1)
            btn1.addButton(self.ui.radioButton_4,1)
    
            # 将RadioBox5/6/7/8 划入组2
            btn2.addButton(self.ui.radioButton_5,1)
            btn2.addButton(self.ui.radioButton_6,1)
            btn2.addButton(self.ui.radioButton_7,1)
            btn2.addButton(self.ui.radioButton_8,1)
    
    		# 将RadioBox9/10 划入组3
            btn3.addButton(self.ui.radioButton_9,1)
            btn3.addButton(self.ui.radioButton_10,1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    QRadioButton设置文本

    QRadioButton设置文本有两种方式,分别是代码设置和界面设置

    代码设置

     		 # 设置RadioBox文本
            self.ui.radioButton.setText("Windows")
            self.ui.radioButton_2.setText("SQL")
            self.ui.radioButton_3.setText("Python")
            self.ui.radioButton_4.setText("Java")
    
            self.ui.radioButton_5.setText("十进制")
            self.ui.radioButton_6.setText("十六进制")
            self.ui.radioButton_7.setText("二进制")
            self.ui.radioButton_8.setText("八进制")
    
            self.ui.radioButton_9.setText("C语言")
            self.ui.radioButton_10.setText("C++语言")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    界面设置

    我们可以通过designer软件进行QRadioButton的文本设置,具体设置如下:
    点击控件->属性编辑器->text里面进行设置
    在这里插入图片描述

    QRadioButton禁用和启用

    当我们不需要使用某个QRadioButton的功能时,可以设置其为禁用模式,设置为禁用模式的QRadioButton将不能被用户使用。如果用户需要再次使用该QRadioButton,需要将其QRadioButton设置为启用模式。同样地设置QRadioButton的禁用和启用也可通过代码和界面进行设置。默认QRadioButton是启用模式。

    代码设置

    self.ui.radioButton_4.setEnabled(False) # 将单选框4设置为禁用模式
    self.ui.radioButton_8.setEnabled(True)  # 将单选框8设置为启用模式
    
    • 1
    • 2

    界面设置

    我们可以通过designer软件进行QRadioButton的禁用和启用设置,具体设置如下:
    点击控件->属性编辑器->enabled里面进行设置。打勾则代表该QRadioButton是启用状态,不打勾则代表该QRadioButton是禁用状态。
    在这里插入图片描述

    QRadioButton设置默认值

    QRadioButton可以设置默认值,也就是说当软件启动时,QRadioButton是默认选中还是未选中状态。设置默认值可以通过代码和界面设置。

    代码设置

    self.ui.radioButton_9.setChecked(False) # 将单选框9的默认值为不选中
    self.ui.radioButton_10.setChecked(True) # 将单选框10的默认值为选中
    
    • 1
    • 2

    界面设置

    我们可以通过designer软件进行QRadioButton的默认值设置,具体设置如下:
    点击控件->属性编辑器->checked里面进行设置。打勾则代表该QRadioButton为选中,不打勾则代表该QRadioButton未选中。

    在这里插入图片描述

    读取QRadioButton状态

    QRadioButton可以通过isChecked函数读取其状态,返回True则代表QRadioButton被选中,返回False则代表QRadioButton没有被选中。

    	self.ui.pushButton.clicked.connect(self.pushButton_func)
    
        def pushButton_func(self):
            if self.ui.radioButton_9.isChecked() == True:
                print("C语言答案被选中")
            else:
                print("C语言答案没有被选中")
    
            if self.ui.radioButton_10.isChecked() == True:
                print("C++语言答案被选中")
            else:
                print("C++语言答案没有被选中")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    QRadioButton样式设计

    如果觉得QRadioButton的外观太单调,可以设置QRadioButton的样式,根据自己的需要设置其背景颜色,字体颜色等。同样地有两种方法进行样式设计,代码设置和界面设置

    代码设置

    self.ui.radioButton_9.setStyleSheet("#radioButton_9:hover{background-color:rgb(0,130,150);border:2px solid #5F92B2;border-radius:5px;color:white;}"
                                                "#radioButton_9:pressed{background-color:rgb(85,170,255);border:2px solid #3C80B1;border-radius:5px;color:red;}")
    
    • 1
    • 2

    界面设置

    我们可以通过designer软件进行QRadioButton的样式设置,具体设置如下:
    点击控件->属性编辑器->styleSheet里面进行设置。
    在这里插入图片描述

    完整程序

    界面程序

    
    <ui version="4.0">
     <class>MainWindowclass>
     <widget class="QMainWindow" name="MainWindow">
      <property name="geometry">
       <rect>
        <x>0x>
        <y>0y>
        <width>601width>
        <height>244height>
       rect>
      property>
      <property name="windowTitle">
       <string>MainWindowstring>
      property>
      <widget class="QWidget" name="centralwidget">
       <layout class="QHBoxLayout" name="horizontalLayout">
        <item>
         <layout class="QVBoxLayout" name="verticalLayout">
          <item>
           <widget class="QLabel" name="label">
            <property name="maximumSize">
             <size>
              <width>16777215width>
              <height>20height>
             size>
            property>
            <property name="text">
             <string>以下哪个是操作系统string>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton">
            <property name="text">
             <string>RadioButtonstring>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton_2">
            <property name="text">
             <string>RadioButtonstring>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton_3">
            <property name="text">
             <string>RadioButtonstring>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton_4">
            <property name="enabled">
             <bool>truebool>
            property>
            <property name="text">
             <string>RadioButtonstring>
            property>
           widget>
          item>
         layout>
        item>
        <item>
         <layout class="QVBoxLayout" name="verticalLayout_2">
          <item>
           <widget class="QLabel" name="label_2">
            <property name="maximumSize">
             <size>
              <width>16777215width>
              <height>20height>
             size>
            property>
            <property name="text">
             <string>计算机内部使用的编码是string>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton_5">
            <property name="text">
             <string>RadioButtonstring>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton_6">
            <property name="text">
             <string>RadioButtonstring>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton_7">
            <property name="enabled">
             <bool>truebool>
            property>
            <property name="text">
             <string>RadioButtonstring>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton_8">
            <property name="text">
             <string>RadioButtonstring>
            property>
           widget>
          item>
         layout>
        item>
        <item>
         <layout class="QVBoxLayout" name="verticalLayout_3">
          <item>
           <widget class="QLabel" name="label_3">
            <property name="maximumSize">
             <size>
              <width>16777215width>
              <height>20height>
             size>
            property>
            <property name="text">
             <string>以下哪个是面向对象语言string>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton_9">
            <property name="text">
             <string>RadioButtonstring>
            property>
            <property name="checkable">
             <bool>truebool>
            property>
            <property name="checked">
             <bool>falsebool>
            property>
           widget>
          item>
          <item>
           <widget class="QRadioButton" name="radioButton_10">
            <property name="styleSheet">
             <string notr="true">#radioButton_10:hover{background-color:rgb(0,130,150);border:2px solid #5F92B2;border-radius:5px;color:white;}
    #radioButton_10:pressed{background-color:rgb(85,170,255);border:2px solid #3C80B1;border-radius:5px;color:red;}string>
            property>
            <property name="text">
             <string>RadioButtonstring>
            property>
           widget>
          item>
          <item>
           <widget class="QPushButton" name="pushButton">
            <property name="text">
             <string>确认答案string>
            property>
           widget>
          item>
         layout>
        item>
       layout>
      widget>
      <widget class="QMenuBar" name="menubar">
       <property name="geometry">
        <rect>
         <x>0x>
         <y>0y>
         <width>601width>
         <height>22height>
        rect>
       property>
      widget>
      <widget class="QStatusBar" name="statusbar"/>
     widget>
     <resources/>
     <connections/>
    ui>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179

    主程序

    # Import Qt libraries
    from PySide6.QtWidgets import *
    from PySide6.QtCore import QFile
    # Import UI developed in Qt Creator
    from radiobox_ui import Ui_MainWindow  # 导入界面
    # Import PseudoSensor
    # Import system tools and datetime
    import sys
    import statistics
    import time
    from datetime import datetime
    
    # Create and start the Qt application
    class MainWindow(QMainWindow):
        def __init__(self):
            super(MainWindow, self).__init__()
            
            # 设置界面为用户设计的界面
            self.ui = Ui_MainWindow() 
            self.ui.setupUi(self) 
    
            btn1 = QButtonGroup(self) # 创建ButtonGroup
            btn2 = QButtonGroup(self) # 创建ButtonGroup
            btn3 = QButtonGroup(self) # 创建ButtonGroup
    
    
            # 将RadioBox1/2/3/4 划入组1
            btn1.addButton(self.ui.radioButton,1)
            btn1.addButton(self.ui.radioButton_2,1)
            btn1.addButton(self.ui.radioButton_3,1)
            btn1.addButton(self.ui.radioButton_4,1)
    
            # 将RadioBox5/6/7/8 划入组2
            btn2.addButton(self.ui.radioButton_5,1)
            btn2.addButton(self.ui.radioButton_6,1)
            btn2.addButton(self.ui.radioButton_7,1)
            btn2.addButton(self.ui.radioButton_8,1)
    
            # 将RadioBox9/10 划入组3
            btn3.addButton(self.ui.radioButton_9,1)
            btn3.addButton(self.ui.radioButton_10,1)
            
    
            # 设置RadioBox文本
            self.ui.radioButton.setText("Windows")
            self.ui.radioButton_2.setText("SQL")
            self.ui.radioButton_3.setText("Python")
            self.ui.radioButton_4.setText("Java")
    
            self.ui.radioButton_5.setText("十进制")
            self.ui.radioButton_6.setText("十六进制")
            self.ui.radioButton_7.setText("二进制")
            self.ui.radioButton_8.setText("八进制")
    
            self.ui.radioButton_9.setText("C语言")
            self.ui.radioButton_10.setText("C++语言")
    
            self.ui.radioButton_4.setEnabled(False) # 将单选框4设置为禁用模式
            self.ui.radioButton_8.setEnabled(True)  # 将单选框8设置为启用模式
    
            self.ui.radioButton_9.setChecked(False) # 将单选框9的默认值为不选中
            self.ui.radioButton_10.setChecked(True) # 将单选框10的默认值为选中
    
            self.ui.radioButton_9.setStyleSheet("#radioButton_9:hover{background-color:rgb(0,130,150);border:2px solid #5F92B2;border-radius:5px;color:white;}"
                                                "#radioButton_9:pressed{background-color:rgb(85,170,255);border:2px solid #3C80B1;border-radius:5px;color:red;}") # 设置单选框9样式
            
            self.ui.pushButton.clicked.connect(self.pushButton_func)
    
    
        def pushButton_func(self):
            if self.ui.radioButton_9.isChecked() == True: # 判断单选框9状态
                print("C语言答案被选中")
            else:
                print("C语言答案没有被选中")
    
            if self.ui.radioButton_10.isChecked() == True: # 判断单选框10状态
                print("C++语言答案被选中")
            else:
                print("C++语言答案没有被选中")
    
        def closeAndExit(self):
            sys.exit()
    
    if __name__ == "__main__":
        app = QApplication(sys.argv) # 初始化QApplication
    
        # 初始化界面并显示界面
        window = MainWindow() 
        window.show() 
    
        sys.exit(app.exec())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91

    在这里插入图片描述

  • 相关阅读:
    在android工程中新建Android模块报错
    使用Redis源码探究字符串的实现
    跨域和验证码的实现
    Vue 组件
    Spring源码系列:初探底层,手写Spring
    掌握这些技巧,让Excel批量数据清洗变得简单高效!
    extcon驱动及其在USB驱动中的应用
    几个月后收到学习心得:通过实战场景推导出 Dubbo 核心内幕
    Vue rules校验规则详解
    数据分析之pandas入门读书笔记
  • 原文地址:https://blog.csdn.net/hwx1546/article/details/133695367