該類提供了一組可供選擇的按鈕和文本標簽,用戶可以選擇其中一個選項,標簽用於顯示對應的文本信息。單選鈕是一種開關按鈕,可以切換為on或者off,急checked或者unchecked,主要是為用戶提供“多選一”的選擇。
QRadioButton 是單選按鈕默認是獨占的。對於繼承自同一個人父類Widget的多個單選按鈕,他們屬於同一個按鈕組合,在單選鈕組里,一次只能選擇一個單選鈕。如果需要多個獨占的按鈕組合,則需要將他們放在QGroupBox或QButtonGroup中。
當將單選按鈕切換到ON或者OFF時,就會發送toggled信號,綁定這個信號,在按鈕狀態發生改變時,觸發相應的行為。
QRadioButton類中的常用方法如下所示:
方法 | 描述 |
---|---|
setCheckable() | 設置按鈕是否被選中,可以改變單選鈕的選中狀態,如果設置為True,則表示單選鈕將保持已點擊或釋放狀態。 |
isChecked() | 返回單選按鈕的狀態。設置返回值True或False |
setText() | 設置單選按鈕的顯示文本 |
text() | 返回單選鈕的顯示文本 |
QRadioButton按鈕的使用
代碼:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class RedioDemo(QWidget):
def __init__(self):
super(RedioDemo, self).__init__()
layout = QHBoxLayout()
self.btn1 = QRadioButton("Button1")
# 默認為選中狀態
self.btn1.setChecked(True)
self.btn1.toggled.connect(lambda : self.btnstate(self.btn1))
layout.addWidget(self.btn1)
self.btn2 = QRadioButton("Button2")
self.btn2.toggled.connect(lambda: self.btnstate(self.btn2))
layout.addWidget(self.btn2)
self.setLayout(layout)
self.setWindowTitle("RadioButton demo")
self.resize(100,100)
def btnstate(self, btn):
if btn.text() == "Button1":
if btn.isChecked() == True:
print(btn.text() + "is selected")
else:
print(btn.text() + "is deselected")
if btn.text() == "Button2":
if btn.isChecked() == True:
print(btn.text() + "is selected")
else:
print(btn.text() + "is deselected")
if __name__ == '__main__':
app = QApplication(sys.argv)
radioDemo = RedioDemo()
radioDemo.show()
sys.exit(app.exec_())
效果如圖所示: