下面是针对PyQt5的程序获取单选按钮标题的详细使用攻略。
程序背景
在PyQt5中,单选按钮(QRadioButton)是常用的控件之一。当用户选中不同的单选按钮时,可能需要获取选中单选按钮的标题,用于后续处理。
程序实现
以下是获取单选按钮标题的脚本示例:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QRadioButton
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl = QLabel(self)
self.lbl.setGeometry(150, 50, 200, 20)
rad1 = QRadioButton('RadioButton 1', self)
rad1.move(50, 50)
rad2 = QRadioButton('RadioButton 2', self)
rad2.move(50, 70)
rad1.toggled.connect(lambda:self.btnstate(rad1))
rad2.toggled.connect(lambda:self.btnstate(rad2))
self.statusBar()
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QRadioButton')
self.show()
def btnstate(self, btn):
if btn.isChecked():
self.lbl.setText(btn.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
这段代码先创建了一个QMainWindow主窗口和两个QRadioButton单选按钮,当单击单选按钮时会执行btnstate()方法。该方法通过isChecked()方法判断当前单选按钮是否选中,如果选中则更新self.lbl标签的文本为选中单选按钮的text属性值。
值得注意的是,该程序需要依赖PyQt5库,因此需要先安装PyQt5库。
下面是两个使用实例:
示例1
该示例针对上述代码进行调试,并在PyCharm控制台中输出选中的单选按钮标题。代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QRadioButton
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl = QLabel(self)
self.lbl.setGeometry(150, 50, 200, 20)
rad1 = QRadioButton('RadioButton 1', self)
rad1.move(50, 50)
rad2 = QRadioButton('RadioButton 2', self)
rad2.move(50, 70)
rad1.toggled.connect(lambda:self.btnstate(rad1))
rad2.toggled.connect(lambda:self.btnstate(rad2))
self.statusBar()
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QRadioButton')
self.show()
def btnstate(self, btn):
if btn.isChecked():
self.lbl.setText(btn.text())
print(btn.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行结果如下:
RadioButton 1
RadioButton 2
可见,每次单击单选按钮,程序会依次输出选中的单选按钮的text属性值。
示例2
该示例演示如何在槽函数中通过sender()方法获取信号源,从而避免为每个单选按钮都写一个lambda函数。代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QRadioButton
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl = QLabel(self)
self.lbl.setGeometry(150, 50, 200, 20)
rad1 = QRadioButton('RadioButton 1', self)
rad1.move(50, 50)
rad2 = QRadioButton('RadioButton 2', self)
rad2.move(50, 70)
rad1.toggled.connect(self.btnstate)
rad2.toggled.connect(self.btnstate)
self.statusBar()
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QRadioButton')
self.show()
def btnstate(self):
btn = self.sender()
if btn.isChecked():
self.lbl.setText(btn.text())
print(btn.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行结果同样是依次输出选中的单选按钮的text属性值。
程序总结
本文通过示例程序演示了如何在PyQt5中获取单选按钮的标题,同时提供了两个使用示例,希望读者能够掌握这个技巧。