QRadioButtons in meerdere groepen
Op deze pagina:
Er mag steeds slechts één keuze tegelijk geselecteerd zijn bij radioknoppen. Als je meerdere groepen radioknoppen in één venster wil gebruiken, dan moeten er meerdere radioknoppen geselecteerd kunnen worden, één radioknop per groep. Dit kan gedaan worden door de radioknoppen te groeperen in layouts.
Hier een voorbeeld:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
'''
QRadioButton2
'''
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QRadioButton, QLabel
from PyQt5.QtCore import QRect
import sys
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.resize(300, 400)
self.move(100, 100)
self.centralWidget = QWidget(self)
# vbox bevat de eerste 3 radioknoppen
self.vboxWidget = QWidget(self.centralWidget)
self.vboxWidget.setGeometry(QRect(0, 0, 340, 130))
self.vbox = QVBoxLayout(self.vboxWidget)
self.vbox.setContentsMargins(10, 10, 10, 10)
self.vbox.setSpacing(6)
self.knop = QRadioButton(self.vboxWidget)
self.knop.setText("Rood")
self.vbox.addWidget(self.knop)
self.knop.toggled.connect(self.toonkleur)
self.knop_2 = QRadioButton(self.vboxWidget)
self.knop_2.setText("Wit")
self.vbox.addWidget(self.knop_2)
self.knop_2.toggled.connect(self.toonkleur)
self.knop_3 = QRadioButton(self.vboxWidget)
self.knop_3.setText("Blauw")
self.vbox.addWidget(self.knop_3)
self.knop_3.toggled.connect(self.toonkleur)
# vbox_2 bevat de 2e set radioknoppen
self.vboxWidget_2 = QWidget(self.centralWidget)
self.vboxWidget_2.setGeometry(QRect(0, 190, 340, 130))
self.vbox_2 = QVBoxLayout(self.vboxWidget_2)
self.vbox_2.setContentsMargins(10, 10, 10, 10)
self.vbox_2.setSpacing(6)
self.knop_4 = QRadioButton(self.vboxWidget_2)
self.knop_4.setText("Koffie")
self.vbox_2.addWidget(self.knop_4)
self.knop_4.toggled.connect(self.toondrank)
self.knop_5 = QRadioButton(self.vboxWidget_2)
self.knop_5.setText("Thee")
self.vbox_2.addWidget(self.knop_5)
self.knop_5.toggled.connect(self.toondrank)
self.knop_6 = QRadioButton(self.vboxWidget_2)
self.knop_6.setText("Cola")
self.vbox_2.addWidget(self.knop_6)
self.knop_6.toggled.connect(self.toondrank)
# vbox_3 bevat het eerste label
self.vboxWidget_3 = QWidget(self.centralWidget)
self.vboxWidget_3.setGeometry(QRect(0, 120, 340, 60))
self.vbox_3 = QVBoxLayout(self.vboxWidget_3)
self.vbox_3.setContentsMargins(10, 10, 10, 10)
self.vbox_3.setSpacing(6)
self.label = QLabel(self.vboxWidget_3)
self.label.setText("Selecteer een kleur")
self.vbox_3.addWidget(self.label)
# vbox_4 bevat het tweede label
self.vboxWidget_4 = QWidget(self.centralWidget)
self.vboxWidget_4.setGeometry(QRect(0, 300, 340, 80))
self.vbox_4 = QVBoxLayout(self.vboxWidget_4)
self.vbox_4.setContentsMargins(10, 10, 10, 10)
self.vbox_4.setSpacing(6)
self.label_2 = QLabel(self.vboxWidget_4)
self.label_2.setText("Selecteer een drank")
self.vbox_4.addWidget(self.label_2knop)
self.setCentralWidget(self.centralWidget)
self.show()
def toonkleur(self):
kleur = ''
if self.knop.isChecked() == True:
kleur = 'Rood'
if self.knop_2.isChecked() == True:
kleur = 'Wit'
if self.knop_3.isChecked() == True:
kleur = 'Blauw'
kleurkeuze = 'De geselecteerde kleur is: ' + kleur
self.label.setText(kleurkeuze)
def toondrank(self):
drank = ''
if self.knop_4.isChecked() == True:
drank = 'Koffie'
if self.knop_5.isChecked() == True:
drank = 'Thee'
if self.knop_6.isChecked() == True:
drank = 'Cola'
drankkeuze = 'De geselecteerde drank is: ' + drank
self.label_2knop.setText(drankkeuze)
App = QApplication(sys.argv)
window = Window()
sys.exit = (App.exec())