PyQt QRadioButton小工具

PyQt 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"

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui 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()

上述代码产生了以下输出 —

PyQt - QRadioButton小工具

Button1 is deselected
Button2 is selected
Button2 is deselected
Button1 is selected

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程