PyQt5-Tutorial - Auswahlknopf

Jinku Hu 15 Februar 2024
  1. PyQt5 QRadiobutton Grundlegendes Beispiel
  2. PyQt5 QRadiobutton setChecked Methode
  3. PyQt5 Gruppe QRadiobutton
PyQt5-Tutorial - Auswahlknopf

QRadiobutton ist ähnlich dem QCheckbox mit der Ausnahme, dass Sie mehr als eine Auswahl haben, aber Sie können immer nur eine davon gleichzeitig auswählen. Das QRadiobutton-Widget hat auch die Textbeschriftung zusammen mit dem runden Radiobutton.

PyQt5 QRadiobutton Grundlegendes Beispiel

Der folgende Code fragt, in welcher Stadt Sie wohnen, und erzeugt zwei Auswahlknöpfe, die der Benutzer auswählen kann. Er zeigt den Text in label an, nachdem der Benutzer eines der Optionsfelder ausgewählt hat.

import sys
from PyQt5.QtWidgets import (
    QLabel,
    QRadioButton,
    QPushButton,
    QVBoxLayout,
    QApplication,
    QWidget,
)


class basicRadiobuttonExample(QWidget):
    def __init__(self):
        super().__init__()

        self.init_ui()

    def init_ui(self):
        self.label = QLabel("Which city do you live in?")
        self.rbtn1 = QRadioButton("New York")
        self.rbtn2 = QRadioButton("Houston")
        self.label2 = QLabel("")

        self.rbtn1.toggled.connect(self.onClicked)
        self.rbtn2.toggled.connect(self.onClicked)

        layout = QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.rbtn1)
        layout.addWidget(self.rbtn2)
        layout.addWidget(self.label2)

        self.setGeometry(200, 200, 300, 150)

        self.setLayout(layout)
        self.setWindowTitle("PyQt5 Radio Button Example")

        self.show()

    def onClicked(self):
        radioBtn = self.sender()
        if radioBtn.isChecked():
            self.label2.setText("You live in " + radioBtn.text())


if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = basicRadiobuttonExample()
    sys.exit(app.exec_())

PyQt5 QRadiobutton Radiobutton Grundlegendes Beispiel

self.rbtn1 = QRadioButton("New York")
self.rbtn2 = QRadioButton("Houston")

Wir legen zwei Auswahlknöpfe rbtn1 und rbtn2 an. Die Zeichenkette in der Klammer ist die Textbeschriftung, die neben dem runden Auswahlknopf angezeigt wird.

self.rbtn1.toggled.connect(self.onClicked)
self.rbtn2.toggled.connect(self.onClicked)

Der Knopf sendet jedes Mal, wenn er an- oder abgewählt wird, das Signal toggled aus. Die Funktion onClicked ist mit dem Signal toggled von zwei Radiobuttons verbunden.

def onClicked(self):
    radioBtn = self.sender()
    if radioBtn.isChecked():
        self.label2.setText("You live in " + radioBtn.text())

self.sender() gibt das Widget zurück, das das Signal aussendet, und die Methode isChecked() im QRadiobutton-Widget ist True, wenn dieser spezielle Knopf ausgewählt ist, andernfalls gibt es False zurück.

Wir könnten den bestimmten Auswahlknopf, der aus der Gruppe der Auswahlknöpfe ausgewählt ist, erhalten, indem wir die Methode isChecked() überprüfen.

PyQt5 QRadiobutton Radiobutton Einfaches Beispiel

PyQt5 QRadiobutton setChecked Methode

Der QRadiobutton wird nach dem Start standardmäßig nicht geprüft. Wir könnten die Voreinstellung des Zustands des während der Initialisierung zu checked Radiobuttons ändern, indem wir die Methode setChecked() verwenden.

Zum Beispiel fügen wir die untere Zeile zu den obigen Beispielcodes hinzu, um das Optionsfeld New York zu prüfen.

self.rbtn1.setChecked(True)

PyQt5 Gruppe QRadiobutton

Alle Auswahlknöpfe im selben übergeordneten Fenster befinden sich innerhalb derselben Gruppe, und das bedeutet, dass nur ein Auswahlknopf gleichzeitig ausgewählt werden konnte, auch wenn die “umgeschalteten” Signale mit verschiedenen Funktionen verbunden sind.

Die QButtonGroup von QtWidgets gruppiert die ausgewählten Schaltflächen zusammen, und wir könnten mehrere QButtonGroup-Instanzen erstellen, um die Optionsschaltflächen aus verschiedenen Gruppen zu isolieren, so dass mehr Schaltflächen im selben Elternwidget geprüft werden könnten.

Das folgende Beispiel zeigt, wie der Benutzer aufgefordert wird, sowohl Stadt als auch Bundesland aus zwei Gruppen von Radio-Buttons auszuwählen.

import sys
from PyQt5.QtWidgets import (
    QLabel,
    QRadioButton,
    QPushButton,
    QVBoxLayout,
    QApplication,
    QWidget,
    QButtonGroup,
)


class basicRadiobuttonExample(QWidget):
    def __init__(self):
        super().__init__()

        self.init_ui()

    def init_ui(self):
        self.label = QLabel("Which city do you live in?")
        self.rbtn1 = QRadioButton("New York")
        self.rbtn2 = QRadioButton("Houston")
        self.label2 = QLabel("")

        self.label3 = QLabel("Which state do you live in?")
        self.rbtn3 = QRadioButton("New York")
        self.rbtn4 = QRadioButton("Texas")
        self.label4 = QLabel("")

        self.btngroup1 = QButtonGroup()
        self.btngroup2 = QButtonGroup()

        self.btngroup1.addButton(self.rbtn1)
        self.btngroup1.addButton(self.rbtn2)
        self.btngroup2.addButton(self.rbtn3)
        self.btngroup2.addButton(self.rbtn4)

        self.rbtn1.toggled.connect(self.onClickedCity)
        self.rbtn2.toggled.connect(self.onClickedCity)

        self.rbtn3.toggled.connect(self.onClickedState)
        self.rbtn4.toggled.connect(self.onClickedState)

        layout = QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.rbtn1)
        layout.addWidget(self.rbtn2)
        layout.addWidget(self.label2)

        layout.addWidget(self.label3)
        layout.addWidget(self.rbtn3)
        layout.addWidget(self.rbtn4)
        layout.addWidget(self.label4)

        self.setGeometry(200, 200, 300, 300)

        self.setLayout(layout)
        self.setWindowTitle("PyQt5 Radio Button Example")

        self.show()

    def onClickedCity(self):
        radioBtn = self.sender()
        if radioBtn.isChecked():
            self.label2.setText("You live in " + radioBtn.text())

    def onClickedState(self):
        radioBtn = self.sender()
        if radioBtn.isChecked():
            self.label4.setText("You live in " + radioBtn.text())


if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = basicRadiobuttonExample()
    sys.exit(app.exec_())

PyQt5 QRadiobutton Auswahlknopf QButtonGroup Gruppe

self.btngroup1 = QButtonGroup()
self.btngroup2 = QButtonGroup()

Es werden zwei Schaltflächengruppen erstellt, um die Auswahlknöpfe zu halten.

self.btngroup1.addButton(self.rbtn1)
self.btngroup1.addButton(self.rbtn2)
self.btngroup2.addButton(self.rbtn3)
self.btngroup2.addButton(self.rbtn4)

Die Auswahlknöpfe in denselben Gruppen werden der gleichen QButtonGroup hinzugefügt.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook