python GUI庫圖形界面開發(fā)之PyQt5單選按鈕控件QRadioButton詳細(xì)使用方法與實(shí)例
QRadioButton 繼承自 QAbstractButton,其主要作用提供用戶一些互斥的按鈕。
QRadioButton 只有一個的時候,功能類似于復(fù)選框, 可以選擇和取消,但是如果有多個,則必須有一個被選中
QRadioButton類中常用的方法 方法 描述 setCheckanle() 設(shè)置按鈕是否已經(jīng)被選中,可以改變單選按鈕的選中狀態(tài),如果設(shè)置為True則表示單選按鈕將保持以點(diǎn)擊和釋放狀態(tài) isChecked() 返回單選按鈕的狀態(tài),返回值True或False setText() 設(shè)置單選按鈕顯示的文本 text() 返回單選按鈕顯示的文本QRadioButton按鈕的使用實(shí)例
import sysfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class RadioDemo(QWidget): def __init__(self,parent=None): super(RadioDemo,self).__init__(parent) #水平布局 layout=QHBoxLayout() self.btn1=QRadioButton(’Button1’) #默認(rèn)選中btn1 self.btn1.setChecked(True) #toggled信號與槽函數(shù)綁定 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’) def btnstate(self,btn): #輸出按鈕1與按鈕2的狀態(tài),選中還是沒選中 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=RadioDemo() radioDemo.show() sys.exit(app.exec_())
效果如圖
在這個例子中,兩個互斥的單選框被放置在窗口中
第一個單選按鈕btn1,被設(shè)置成默認(rèn)狀態(tài)
self.btn1.setChecked(True)
當(dāng)選擇兩個按鈕相互切換時,按鈕的狀態(tài)發(fā)生改變,將觸發(fā)toggle信號,并與槽函數(shù)btnstate()連接。使用lamdba的方式允許將源信號傳遞給槽函數(shù),將按鈕作為參數(shù)
self.btn1.toggled.connect(lambda :self.btnstate(self.btn1))self.btn1.toggled.connect(lambda :self.btnstate(self.btn1))
當(dāng)發(fā)射toggled信號后,使用btnstate()函數(shù)來檢查按鈕的狀態(tài)
所有QRadioButton的控件是互斥的,所以也可以通過多個父控件來對QRadioButton進(jìn)行分組。不過,一般使用QButtonGroup來對按鍵進(jìn)行分組。通過按鍵分組的方式來讓不同類型的QRadioButton不互相排斥。
本文主要講解了PyQt5單選按鈕控件QRadioButton詳細(xì)使用方法與實(shí)例,更多關(guān)于PyQt5控件知識請查看下面的相關(guān)鏈接
相關(guān)文章:
