Python - Tkinter Checkbutton


Dugme za provjeru (Checkbutton) koristi se za praćenje odabira korisnika koji su dati u aplikaciji. Drugim riječima, možemo reći da se Checkbutton koristi za implementaciju odabira za uključivanje/isključivanje. Dugme za provjeru (Checkbutton) može da sadrži tekst ili slike. Dugme za provjeru se uglavnom koristi za pružanje izbora korisniku među kojima korisnik treba izabrati jednu. Sintaksa za korištenje dugmeta za potvrdu (Checkbutton) je:

w = checkbutton(master, options)  

Spisak mogućih opcija je dat u sljedećoj tabeli.

Opcija Opis
activebackground Predstavlja boju pozadine kada je dugme za potvrdu ispod kursora.
activeforeground Predstavlja boju prednjeg plana dugmeta za potvrdu kada je dugme za potvrdu ispod kursora.
bg Boja pozadine dugmeta.
bitmap Prikazuje sliku (monohromatsku) na dugmetu.
bd Veličina border-a (granice) oko uglova.
command Povezana je s funkcijom koja se poziva kada se promijeni stanje dugmeta za potvrdu.
cursor Pokazivač miša će biti promijenjen u ime kursora kada se nađe iznad dugmeta za potvrdu.
disableforeground Boja koja se koristi za predstavljanje teksta onemogućenog dugmeta za potvrdu.
font Predstavlja font dugmeta za potvrdu.
fg Boja prednjeg plana (boja teksta - text color) dugmeta za potvrdu.
height Predstavlja visinu dugmeta za potvrdu (broj linija). Zadana visina je 1.
highlightcolor Boja isticanja fokusa kada je dugme za potvrdu pod fokusom.
image Slika koja se koristi za predstavljanje dugmeta za potvrdu.
justify Određuje opravdanost teksta ako tekst sadrži više redova.
offvalue Pridružena kontrolna varijabla je po difoltu postavljena na 0 ako je dugme poništeno.
onvalue Pridružena kontrolna varijabla je po difoltu postavljena na 1 ako je dugme označeno.s
padx Horizontalni padding dugmeta za potvrdu.
pady Vertikalni padding dugmeta za potvrdu.
relief Tip ivice dugmeta za potvrdu. Podrazumevano je postavljeno na FLAT.
selectcolor Boja dugmeta za potvrdu kada je postavljena. Podrazumjevano je crvena.
selectimage Slika se prikazuje na dugmetu za potvrdu kada je postavljena.
state Predstavlja stanje dugmeta za potvrdu. Podrazumevano je postavljeno na normal. Možemo ga promijeniti u DISABLED (ONEMOGUĆEN) da dugme za potvrdu ne reaguje. Stanje dugmeta za potvrdu je ACTIVE (AKTIVNO) kada je u fokusu.
underline Predstavlja indeks znaka u tekstu koji treba podvući. Indeksiranje počinje nulom u tekstu.
variable Predstavlja pridruženu varijablu koja prati stanje dugmeta za potvrdu.
width Predstavlja širinu dugmeta za potvrdu. Predstavlja se brojem znakova koji su predstavljeni u obliku tekstova.
wraplength Ako je ova opcija postavljena na cijeli broj, tekst će biti razbijen na broj dijelova.


Metode

Metode koje se mogu pozvati pomoću dugmeta za provjeru opisane su u sljedećoj tabeli.

Metod Opis
deselect() Poziva se da isključi dugme za potvrdu.
flash() Dugme za potvrdu treperi između aktivne i normalne boje.
invoke() Poziva metodu povezanu sa dugmetom za potvrdu.
select() Poziva se da uključi dugme za potvrdu.
toggle() Koristi se za prebacivanje između različitih dugmadi za potvrdu.

Primjer broj 1: Tkinter Checkbutton

from tkinter import *   
  
top = Tk()  
  
top.geometry("200x200")  
  
checkvar1 = IntVar()  
checkvar2 = IntVar()  
checkvar3 = IntVar()  
  
chkbtn1 = Checkbutton(top, text = "Python", variable = checkvar1, onvalue = 1, offvalue = 0, height = 2, width = 10)  
chkbtn2 = Checkbutton(top, text = "C++", variable = checkvar2, onvalue = 1, offvalue = 0, height = 2, width = 10)   
chkbtn3 = Checkbutton(top, text = "Java", variable = checkvar3, onvalue = 1, offvalue = 0, height = 2, width = 10)  
  
chkbtn1.pack()   
chkbtn2.pack()  
chkbtn3.pack()  
  
top.mainloop()



Primjer broj 2: Tkinter Checkbutton

from tkinter import *

master = Tk()

var1 = IntVar()
Checkbutton(master, text="Muško", variable=var1).grid(row=0, sticky=W)

var2 = IntVar()
Checkbutton(master, text="Žensko", variable=var2).grid(row=1, sticky=W)

mainloop()

Prikaz koda iz gornjeg primjera izgledaće ovako:



Možemo malo poboljšati ovaj primjer. Prvo mu dodajemo oznaku (Label). Dodatno dodajemo dva dugmeta, jedno za napuštanje aplikacije, a drugo za pregled vrednosti var1 i var2.

from tkinter import *
master = Tk()

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

Label(master, text="Vaš pol:").grid(row=0, sticky=W)
var1 = IntVar()

Checkbutton(master, text="Muško", variable=var1).grid(row=1, sticky=W)
var2 = IntVar()

Checkbutton(master, text="Žensko", variable=var2).grid(row=2, sticky=W)
Button(master, text='Izađi', command=master.quit).grid(row=3, sticky=W, pady=4)
Button(master, text='Prikaži', command=var_states).grid(row=4, sticky=W, pady=4)

mainloop()

Prikaz koda iz gornjeg primjera izgledaće ovako:



Sada ćemo napisati aplikaciju, koja prikazuje listu programskih jezika, npr. ['Python', 'Ruby', 'Perl', 'C++'] i lista prirodnih jezika, npr. ['Engleski','Njemački'] kao potvrdni okviri. Dakle, moguće je izabrati programske jezike i prirodne jezike. Osim toga, imamo dva dugmeta: dugme "Izađi" za završetak aplikacije i dugme "Odaberi" za provjeru stanja varijabli polja za potvrdu.

#!/usr/bin/python3

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, ['Engleski','Njemački'])
   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='Odustani', command=root.quit).pack(side=RIGHT)
   Button(root, text='Odaberi', command=allstates).pack(side=RIGHT)
   
   root.mainloop()

Prikaz koda iz gornjeg primjera izgledaće ovako: