Python. Grafické príkazy. Modul tkinter

Python je modulárny programovací jazyk. Základnú sadu príkazov možno rozšíriť rôznymi modulmi. Keď potrebujeme pracovať s grafikou, môžeme si vybrať z veľkého množstva modulov. Oboznámim vás s  modulom tkinter.

Príkazy modulu sa sprístupnia príkazom import\, MenoModulu

Začiatky  programov, v ktorých budeme používať modul tkinter budú:

\\import\, tkinter\\ platno = tkinter.Canvas()\\ platno.pack()

Príkaz import\, tkinter naimportuje všetky príkazy modulu tkinter.

Príkaz platno=tkinter.Canvas()  vytvorí plátno na ktoré budeme kresliť. Ak nezadáme šírku a výšku plátna, Python použije preddefinované hodnoty (na rôznych počítačoch môžu byť rôzne).

Šírku a výšku plátna nastavíme parametrami width a height:  platno=tkinter.Canvas(width=400, height=400).

Príkaz platno.pack() zobrazí na monitore prázdne plátno.

Úsečka a séria úsečiek

Okrem bodu je najjednoduchším grafickým objektom úsečka a séria nadväzujúcich úsečiek. Úsečka je spojnica dvoch bodov. Kým v geometrii úsečka má dĺžku, ale nemá šírku, pri kreslení či už ceruzkou alebo na monitore, nakreslená čiara má nejakú minimálnu hrúbku. Príkaz na nakreslenie úsečky v module tkinter je:

platno.create\_line(x_1,y_1,x_2,y_2)

Viacero nadväzujúcich úsečiek nakreslíme príkazom:

platno.create\_line(x_1,y_1,x_2,y_2,x_3,y_3, ... x_n,y_n)

Nezadali sme hrúbku ani farbu čiary, čiara bude nakreslená hrúbkou jeden pixel čiernou farbou. Parameter pre farbu čiary je fill a pre hrúbku čiary je width. Ak by sme chceli nakresliť zelený trojuholník s hrúbkou čiary  5, použijeme príkaz:

platno.create\_line(10, 100, 200, 100, 10, 200,10,100,width=5,fill='green')

Vykreslí sa: 

Nakreslenie obdĺžnika a štvorca

Obdĺžnik, ktorého hrany sú rovnobežné s okrajmi plátna nakreslíme príkazom: create\_rectangle(x_1, y_1, x_2,y_2), mohli by sme ho nakresliť aj pomocou príkazu create\_line, ale museli by sme použiť  päť súradníc rohových bodov namiesto dvoch. V príkaze create\_rectangle tiež možno použiť parametre width a fill. Parameter fill vyplní vnútro obdĺžnika zvolenou farbou. Pokiaľ by sme chceli, aby vnútro malo inú farbu ako strany obdĺžnika, použijeme parameter outline. Ak parameter outline nepoužijeme, strany obdĺžnika budú nakreslené čiernou farbou. Príkaz:

platno.create\_rectangle(220,50,320,200,fill='red',width=5, outline='yellow')

nakreslí takýto obdĺžnik:

Elipsa a kružnica

Elipsu vpísanú do obdĺžnika alebo kružnicu vpísanú do štvorca nakreslíme príkazom: create\_oval(x_1,y_1,x_2,y_2)

Súradnice zodpovedajú súradniciam z príkazu pre vytvorenie obdĺžnika. Ak použijeme rovnaké súradnice, ako pri kreslení obdĺžnika, elipsa bude doň vpísaná: platno.create\_oval(220,50,320,200,fill='green',width=5, outline='yellow') a výsledný obrázok bude:

Grafické útvary ako objekty

Pri kreslení záleží na tom, v akom poradí objekty kreslíme. Ak najprv nakreslíme kružnicu a potom štvorec do ktorého je vpísaná, kružnicu nebude vidno, ak to spravíme naopak, tak ju vidno bude.

Modul tkinter kreslí geometrické útvary ako objekty. Každý príkaz create_nieco vytvorí objekt s príslušnými parametrami. S týmito objektami môžeme dodatočne vykonať rôzne operácie. Objekt pri vytvorení získa identifikátor, ktorý zodpovedá poradiu vytvorenia objektu. S objektom môžeme manipulovať pomocou tohto identifikátora. Ak náš program bude vyzerať takto:

import tkinter
platno = tkinter.Canvas(height=400,width=400)
platno.pack()
platno.create_line(10, 100, 200, 100, 10, 200,10,100,
width=5,fill=’green‘)
platno.create_oval(220,50,320,200,fill=’green‘,width=5,
outline=’yellow‘)
platno.create_rectangle(220,50,320,200,fill=’red‘,
width=5, outline=’yellow‘)

Na plátne bude zobrazený iba trojuholník a obdĺžnik. V skutočnosti je na plátne aj elipsa, ale ju nevidno, lebo na nej „leží“ obdĺžnik.

Ak v príkazovom riadku napíšeme príkaz:

platno.delete(3), tak objekt obdĺžnik zrušíme a elipsa sa zobrazí. Dostaneme obrázok:

Práca s textom v module tkinter

Často potrebujeme popri grafických objektoch vypísať na obrazovku aj nejaké texty. Textu na plátno napíšeme príkazom: create_text(x,y,text=“xyz“)

print

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *