Tkinter



Radiobutton Widget

Old Radio, Image is Public Domain
Tlačítko Radiobutton, někdy nazývané výběrové tlačítko, je grafický prvek, který umožňuje výběr jedné ze zadané sady možností. Tato tlačítka mohou zahrnovat text (s jedním fontem) či obrázek. S widgetem "radiobutton" lze spojit funkci či metodu Pythonu. Stisk tlačítka tyto procedury aktivuje.

Toto tlačítko je pojmenováno po tlačítkách staršího radia, používaných pro výběr vlnového pásma či přednastavené stanice. Stisk jednoho tlačítka vyřadil působení jiných tlačítek.

Každá skupina radiových tlačítek musí být spojena s touž proměnnou. Stlačení tlačítka změní hodnotu této proměnné na jinou, přednastavenou hodnotu.

Jednoduchý příklad s radiovými tlačítky

from tkinter import *

root = Tk()

v = IntVar()

Label(root, 
      text="""Choose a programming language:""",
      justify=LEFT, padx=20).pack()
Radiobutton(root, text="Python", padx=20, 
            variable=v, value=1).pack(anchor=W)
Radiobutton(root, text="Perl", padx=20, 
            variable=v, value=2).pack(anchor=W)

mainloop()

Výsledek předchozího skriptu vypadá takto:

Radio Buttons, Simple Example

Vylepšení příkladu

V některých případech jsou zapotřebí více než dvě tlačítka. Bylo by dost těžkopádné, kdybychom museli deklarovat každé tlačítko zvlášť. Řešení je ukázáno v následujícím příkladu. Máme seznam "languages", který obsahuje texty tlačítek a příslušné hodnoty. Pro vytvoření všech tlačítek můžeme použít smyčku "for".
from tkinter import *

root = Tk()

v = IntVar()
v.set(1)  # počáteční volba, zde Python

languages = [
    ("Python",1),
    ("Perl",2),
    ("Java",3),
    ("C++",4),
    ("C",5)
]

def ShowChoice():
    print (v.get(), "-->", languages[v.get()-1][0])

Label(root, text="""Choose your favourite 
                 programming language:""",
      justify = LEFT, padx = 20).pack()

for txt, val in languages:
    Radiobutton(root, text=txt, padx = 20, 
                variable=v, command=ShowChoice,
                value=val).pack(anchor=W)

mainloop()

Výsledek předchozího skriptu vypadá takto:

Radio Buttons, Extended Example

Indikátor

Místo tlačítek s prázdnými kruhovými otvory můžeme mít tlačítka s textem v rámečku. Zařídíme to tím, že nastavíme parametr "indicatoron" na nulu, což znamená, že nebude žádný odlišný indikátor radiového tlačítka.

Definici widgetu "radibutton" z předchozího příkladu nahradíme následujícím kódem:

    Radiobutton(root, 
                text=txt,
                indicatoron = 0,
                width = 20,
                padx = 20, 
                variable=v, 
                command=ShowChoice,
                value=val).pack(anchor=W)


Přidali jsme parametr indicatoron a width (šířku).

Radio buttons with indicatoron option