PyQt5 – 获取单选按钮标题的程序

  • Post category:Python

下面是针对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中获取单选按钮的标题,同时提供了两个使用示例,希望读者能够掌握这个技巧。