Tkinter tutorial - Radiobutton
- Tkinter Radiobutton Basisvoorbeeld
- Tkinter Radiobutton - Ontvang waarde
- Verander Tkinter Radiobutton Indicator Type
- Bind Tkinter Radiobutton Callback-functie

Je hebt label , knop en Checkbutton in de laatste secties geleerd . Tkinter-widgets hebben vrij vergelijkbare opties, eigenschappen of methoden, daarom kunnen we vanaf dit gedeelte in een snel tempo leren.
De Radiobuton is een one-of-many type knop. Het heeft meer dan één optie in de selectie, maar de gebruiker kan er slechts één selecteren. Hetzelfde als eerder geïntroduceerde widgets, Radibutton zou tekst of afbeelding kunnen bevatten en zou de callback-functie of methode eraan kunnen binden. Deze callback-functie wordt automatisch geactiveerd wanneer op die knop wordt gedrukt.
Tkinter Radiobutton Basisvoorbeeld
import tkinter as tk
app = tk.Tk()
app.geometry('150x100')
radioValue = tk.IntVar()
rdioOne = tk.Radiobutton(app, text='January',
variable=radioValue, value=1)
rdioTwo = tk.Radiobutton(app, text='Febuary',
variable=radioValue, value=2)
rdioThree = tk.Radiobutton(app, text='March',
variable=radioValue, value=3)
rdioOne.grid(column=0, row=0)
rdioTwo.grid(column=0, row=1)
rdioThree.grid(column=0, row=2)
app.mainloop()
Het resultaat van bovenstaande Radiobutton-basisdemo is hieronder
radioValue = tk.IntVar()
Net als de selectieknop, moeten keuzerondjes waarden van een bepaald gegevenstype eraan koppelen.
rdioOne = tk.Radiobutton(app, text='January',
variable=radioValue, value=1)
rdioTwo = tk.Radiobutton(app, text='Febuary',
variable=radioValue, value=2)
rdioThree = tk.Radiobutton(app, text='March',
variable=radioValue, value=3)
Hier worden daar knoppen gemaakt met de tekst “januari”, “februari” en “maart”. Radioknoppen in dezelfde groep moeten en moeten unieke waarden hebben.
Vraag
Wat als ze dubbele waarden hebben?
Tkinter Radiobutton - Ontvang waarde
De keuzerondjes in dezelfde groep delen dezelfde variabele, radioValue
zoals weergegeven in het bovenstaande voorbeeld, en krijgen bij de optie verschillende waarden toegewezen value
.
De waarde van het geselecteerde keuzerondje werkt automatisch de variabele bij radioValue
die een is tk.IntVar
.
De labeltekst geeft automatisch de waarde van de geselecteerde knop weer in de onderstaande voorbeeldcodes.
import tkinter as tk
app = tk.Tk()
app.geometry('200x100')
radioValue = tk.IntVar()
rdioOne = tk.Radiobutton(app, text='January',
variable=radioValue, value=0)
rdioTwo = tk.Radiobutton(app, text='Febuary',
variable=radioValue, value=1)
rdioThree = tk.Radiobutton(app, text='March',
variable=radioValue, value=2)
rdioOne.grid(column=0, row=0, sticky="W")
rdioTwo.grid(column=0, row=1, sticky="W")
rdioThree.grid(column=0, row=2, sticky="W")
labelValue = tk.Label(app, textvariable=radioValue)
labelValue.grid(column=2, row=0, sticky="E", padx=40)
app.mainloop()
De textvariable
van het labelValue
label is het zelfde met variable
optie van de radio knoppen, zodat het label tekst kon automatisch werkt zichzelf.
Verander Tkinter Radiobutton Indicator Type
De standaardindicator voor het keuzerondje is een rond gat met witruimte erin, maar deze kan ook worden vervangen door een vak met tekst of afbeelding. Het tekstvak wordt verhoogd wanneer het keuzerondje niet is geselecteerd en wordt verzonken wanneer het wordt ingedrukt.
rdioOne = tk.Radiobutton(app, text='I am raised',
variable=radioValue, value=1,
indicatoron = 0)
indicatoron
is de optie om de ronde cirkelindicator van de raidoknop in of uit te schakelen. indicatoron
= indicator on
Bind Tkinter Radiobutton Callback-functie
Het is precies hetzelfde met [Tkinter Checkbutton](/tutorial/tkinter-tutorial/tkinter-checkbutton/#Tkinter Checkbutton Callback Function Binding) in de optie voor het instellen van de knop callback-functie. Gebruik optie command=
.
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