PyQt5-Tutorial - Auswahlknopf
-
PyQt5
QRadiobutton
Grundlegendes Beispiel -
PyQt5
QRadiobutton
setChecked
Methode -
PyQt5 Gruppe
QRadiobutton
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_())
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
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_())
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.
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