PyQt5 - QRadioButton 控制元件



一個QRadioButton 類物件呈現一個可選按鈕,並帶有文字標籤。使用者可以選擇表單上提供的多個選項之一。此類派生自 QAbstractButton 類。

預設情況下,單選按鈕是互斥的。因此,一次只能選擇父視窗中的一個單選按鈕。如果選擇了其中一個,則先前選擇的按鈕將自動取消選擇。單選按鈕也可以放在QGroupBoxQButtonGroup 中,以便在父視窗上建立多個可選欄位。

以下列出的 QRadioButton 類方法最常用。

序號 方法及描述
1

setChecked()

更改單選按鈕的狀態

2

setText()

設定與按鈕關聯的標籤

3

text()

檢索按鈕的標題

4

isChecked()

檢查按鈕是否被選中

與 QRadioButton 物件關聯的預設訊號是 toggled(),儘管也可以實現從 QAbstractButton 類繼承的其他訊號。

示例

這裡在頂級視窗上構建了兩個互斥的單選按鈕。

透過語句將 b1 的預設狀態設定為選中狀態:

Self.b1.setChecked(True)

兩個按鈕的 toggled() 訊號都連線到 btnstate() 函式。使用 lambda 允許將訊號的來源作為引數傳遞給函式。

self.b1.toggled.connect(lambda:self.btnstate(self.b1))
self.b2.toggled.connect(lambda:self.btnstate(self.b2))

btnstate() 函式檢查發出 toggled() 訊號的按鈕的狀態。

if b.isChecked() == True:
      print b.text()+" is selected"
   else:
      print b.text()+" is deselected"

QRadioButton 示例的完整程式碼如下:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Radiodemo(QWidget):
   def __init__(self, parent = None):
      super(Radiodemo, self).__init__(parent)
		
      layout = QHBoxLayout()
      self.b1 = QRadioButton("Button1")
      self.b1.setChecked(True)
      self.b1.toggled.connect(lambda:self.btnstate(self.b1))
      layout.addWidget(self.b1)
		
      self.b2 = QRadioButton("Button2")
      self.b2.toggled.connect(lambda:self.btnstate(self.b2))

      layout.addWidget(self.b2)
      self.setLayout(layout)
      self.setWindowTitle("RadioButton demo")
		
   def btnstate(self,b):
      if b.text() == "Button1":
         if b.isChecked() == True:
            print b.text()+" is selected"
         else:
            print b.text()+" is deselected"
				
      if b.text() == "Button2":
         if b.isChecked() == True:
            print b.text()+" is selected"
         else:
            print b.text()+" is deselected"
				
def main():

   app = QApplication(sys.argv)
   ex = Radiodemo()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

以上程式碼產生以下輸出:

QRadioButton Widget Output
Button1 is deselected
Button2 is selected
Button2 is deselected
Button1 is selected
pyqt_basic_widgets.htm
廣告

© . All rights reserved.