Knjiga - mrežno i paralelno programiranje
5. Modul tkinter
Programi s grafičkim korisničkim sučeljima
Programi koje smo do sada radili unosili su podatke iz komandne linije. Današnji programi za komercijalnu upotrebu imaju grafička korisnička sučelja. U Pythonu za kreiranje takvih programa služi modul tkinter.
Osnovni element svakog programa s grafičkim korisničkim sučeljem je prozor. Na njega možemo dodavati druge elemente: okviri za unos teksta, različite vrste gumba, izbornici itd.
Za svaki od navedenih elemenata, pa i za sam prozor, kreirana je posebna klasa unutar modula tkinter, a dodavanje pojedinog elementa na sučelje programa svodi se na kreiranje instance pripadne klase, postavljanje parametara te smještanje objekta na sučelje.
Osnovni prozor programa – klasa Tk
Klasa koja će kreirati osnovni prozor programa je Tk(). Kreiranjem instance ove klase na ekranu će se pojaviti prozor kao na slici.
>>> from tkinter import *
>>> t = Tk()
>>> mainloop()

Nakon kreiranja instance klase Tk() pozvali smo funkciju mainloop() koja kao i kod kornjačine grafike služi da da grafički prozor ostane aktivan sve dok ga ne zatvorimo klikom na gumb Close (
).
Naslov, veličinu ali i još niz drugih parametara prozora moguće je programski promijeniti:
- title(naslov) - definiranje naslova prozora
- config(p_1 = v_1, p_2 = v_2,...) - definiranje postavki prozora. Parametri mogu biti:
-
- background, bg - boja pozadine prozora
- borderwidth, bd - debljina ruba prozora
- cursor - oblik kursora dok je nad prozorom, neki od oblika kursora su: arrow, man, mouse, pencil, plus, clock, cross, sizing, draft_large, draft_small, exchange, hand1, hand2, heart, umbrella,...
- height- visina
- padx, pady - udaljenost sadržaja od rubova prozora
- width - širina prozora
Boju možemo zadati engleskim nazivom ili RGB kodom, a naziv boje pišemo unutar navodnika.
ZADATAK 1
Kreirajmo prozor u čijoj će naslovnoj traci pisati: Moj prvi program s grafičkim sučeljem.
Dimenzije prozora su 400 x 300 a boja pozadine prozora je plava.
Rješenje:
from tkinter import *
t = Tk()
t.config(width = 800, height = 600, bg = 'blue')
t.title('Moj prvi program s grafičkim sučeljem')
mainloop()
Nakon što pokrenemo program dobit ćemo sljedeći prozor:

Isto tako moguće je odrediti je li veličina prozora fiksna ili promjenjiva. To ćemo definirati metodom:
- resizable(width, height) - određivanje mogućnosti da se prozoru mijenja veličina po širini odnosno visini ili je veličina prozora fiksna i nepromjenjiva. Ukoliko želimo da se veličina po nekoj komponenti može mijenjati postavit ćemo vrijednost pripadnog parametra na True, a inače ćemo postaviti vrijednost parametra na False.

Na prvoj slici klikom na ikonicu za povećavanje prozora, on će se povećati preko cijelog ekrana.
Na drugoj se može povećati samo po visini, na trećoj samo po širini, a na zadnjoj slici se prozor ne može povećavati.
Još neke metode su:
- destroy() - metoda za zatvaranje prozora (može i klikom na Close)
- cget(p) - metoda za dohvaćanje vrijednosti pojedinog parametra
from tkinter import *
t = Tk()
t.config(width = 400, height = 300, bg = 'blue')
t.title('Moj prvi program s grafičkim sučeljem')
print(t.cget('width'))
print(t.cget('bg'))
mainloop()
Osim pomoću config() neki parametar možemo promijeniti na način kao u primjeru:
Današnji zadatak je riješiti kviz kojim ćete provjeriti svoje znanje o osnovnim mogućnosti modula tkinter:
https://loomen.carnet.hr/mod/quiz/view.php?id=839028