Tkinter


Checkbox Widget

Python Perl Java Checkboxes Widgety Checkbutton (případně Checkox), neboli zatržítka, jsou objekty, které umožňují výběr více položek najednou. Tím se liší od radiového tlačítka, kde lze vybrat pouze jednu možnost.

Obvykle se zobrazují jako prázdné čtverečky, představujíce hodnotu False nebo se znakem ve tvaru fajfky či ležatého křížku, čímž reprezentují hodnoutu True.

Legenda, popisující význam zatržítka se obvykle umisťuje vedle. Stav zatržítka se mění poklepem myší na čtverečku. Alternativně lze definovat poklep na legendu či použití klávesnicové zkratky, případně mezerníku.

Checkbutton má dva stavy: "on" nebo "off".

Objekt třídy Checkbutton může obsahovat víceřádkový text s jedním fontem nebo obrázek. Widget může být spojen s funkcí nebo metodou Pythonu, aktivovanou stisknutím tlačítka.

Jednoduchý příklad

Následující příklad představuje dvě zatržíka "male" a "female". Každé potřebuje jiný název proměnné IntVar().
from tkinter import *
master = Tk()
var1 = IntVar()
Checkbutton(master, text="male",
            variable=var1).grid(row=0, sticky=W)
var2 = IntVar()
Checkbutton(master, text="female",
            variable=var2).grid(row=1, sticky=W)
mainloop()
Když tento skript spustíme, dostaneme následující okno:

Male Female Checkboxes

Tento jednoduchý příklad trošku vylepšíme. Nejprve přidáme popisek a následně dvě tlačítka. Jedno pro opuštění aplikace a druhé pro zobrazení hodnot var1 a var2.
from tkinter import *

master = Tk()

def var_states():
    print("male: %d,\nfemale: %d" % (var1.get(), 
           var2.get()))

Label(master, text="Your sex:").grid(row=0, sticky=W)
var1 = IntVar()
Checkbutton(master, text="male",
            variable=var1).grid(row=1, sticky=W)
var2 = IntVar()
Checkbutton(master, text="female",
            variable=var2).grid(row=2, sticky=W)
Button(master, text='Quit', command=master.quit)
	   .grid(row=3, sticky=W, pady=4)
Button(master, text='Show', command=var_states)
	   .grid(row=4, sticky=W, pady=4)
mainloop()
Výsledek předcházejícího skriptu je následující:

Get Sex

Tlačítko Quit použijeme po zralé úvaze. Vybereme-li "male" a klikneme "Show", dostaneme následující výstup:
male: 1,
female: 0


Jiný příklad se zatržítky

Napíšeme aplikaci, která zobrazí seznam programovacích jazyků ['Python', 'Ruby', 'Perl', 'C++'] a seznam přirozených jazyků ['English', 'German'] jako zatržítka. Dále vytvoříme tlačítko "Quit" pro ukončení aplikace a tlačítko "Peek" pro zjištění stavu proměnných u jednotlivých zatržítek.
from tkinter import *

class Checkbar(Frame):
    def __init__(self, parent=None, picks=[], 
                 side=LEFT, anchor=W):
        Frame.__init__(self, parent)
        self.vars = []
        for pick in picks:
            var = IntVar()
            chk = Checkbutton(self, text=pick, 
			      variable=var)
            chk.pack(side=side, anchor=anchor, expand=YES)
                     self.vars.append(var)
    def state(self):
        return map((lambda var: var.get()), self.vars)
		
if __name__ == '__main__':
    root = Tk()
    lng = Checkbar(root, ['Python', 'Ruby', 'Perl', 
	                  'C++'])
    tgl = Checkbar(root, ['English','German'])
    lng.pack(side=TOP,  fill=X)
    tgl.pack(side=LEFT)
    lng.config(relief=GROOVE, bd=2)

    def allstates(): 
        print(list(lng.state()), list(tgl.state()))
    Button(root, text='Quit', 
  	   command=root.quit).pack(side=RIGHT)
    Button(root, text='Peek',
           command=allstates).pack(side=RIGHT)
    root.mainloop()
Okno vypadá takto:

Programming Languages and Natural Languages as Checkboxes