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)

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++语言")

界面设置

我们可以通过designer软件进行QRadioButton的文本设置,具体设置如下:
点击控件->属性编辑器->text里面进行设置
Pyside6 QRadioButton-LMLPHP

QRadioButton禁用和启用

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

代码设置

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

界面设置

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

QRadioButton设置默认值

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

代码设置

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

界面设置

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

Pyside6 QRadioButton-LMLPHP

读取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++语言答案没有被选中")

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;}")

界面设置

我们可以通过designer软件进行QRadioButton的样式设置,具体设置如下:
点击控件->属性编辑器->styleSheet里面进行设置。
Pyside6 QRadioButton-LMLPHP

完整程序

界面程序

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>601</width>
    <height>244</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </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>16777215</width>
          <height>20</height>
         </size>
        </property>
        <property name="text">
         <string>以下哪个是操作系统</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QRadioButton" name="radioButton">
        <property name="text">
         <string>RadioButton</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QRadioButton" name="radioButton_2">
        <property name="text">
         <string>RadioButton</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QRadioButton" name="radioButton_3">
        <property name="text">
         <string>RadioButton</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QRadioButton" name="radioButton_4">
        <property name="enabled">
         <bool>true</bool>
        </property>
        <property name="text">
         <string>RadioButton</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <item>
       <widget class="QLabel" name="label_2">
        <property name="maximumSize">
         <size>
          <width>16777215</width>
          <height>20</height>
         </size>
        </property>
        <property name="text">
         <string>计算机内部使用的编码是</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QRadioButton" name="radioButton_5">
        <property name="text">
         <string>RadioButton</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QRadioButton" name="radioButton_6">
        <property name="text">
         <string>RadioButton</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QRadioButton" name="radioButton_7">
        <property name="enabled">
         <bool>true</bool>
        </property>
        <property name="text">
         <string>RadioButton</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QRadioButton" name="radioButton_8">
        <property name="text">
         <string>RadioButton</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_3">
      <item>
       <widget class="QLabel" name="label_3">
        <property name="maximumSize">
         <size>
          <width>16777215</width>
          <height>20</height>
         </size>
        </property>
        <property name="text">
         <string>以下哪个是面向对象语言</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QRadioButton" name="radioButton_9">
        <property name="text">
         <string>RadioButton</string>
        </property>
        <property name="checkable">
         <bool>true</bool>
        </property>
        <property name="checked">
         <bool>false</bool>
        </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>RadioButton</string>
        </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>0</x>
     <y>0</y>
     <width>601</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

主程序

# 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())

Pyside6 QRadioButton-LMLPHP

10-10 01:23