informatika.bilíčka.sk

Text v canvas-e & cyklus

2 "novinky" :) Písanie textu do grafickej plochy Canvas a cyklus FOR.

Text a canvas

V grafickej ploche vieme pomocou príkazu canvas.create_text(30, 40, text="Ahoj") vyvoriť text. Súčasťou príkazu sú dva číselné argumenty, vyjadrujú súradnice x a y, určujúce stred "vykresleného" textu a pomenovaný argument text určujuci čo za text sa má v grafickej ploche zobraziť. Pre prácu s grafickou plochou nezabudi na riadky sprístupňujúce knižnicu tkinter. Vykreslovanie textu je užitočné pri pomocných označeniach pre používateľa nášho programu, napríklad ak by sme v grafickej ploche zobrazovali "rysovanie" geometrickej úlohy alebo graf, v grafickej ploche môže byť vytovrená aj hra - pomocou textu zobrazíme informácie o aktuálnom leveli, životoch, zostávajúcej munícii...

import tkinter

canvas = tkinter.Canvas(width=400, height=300)
canvas.pack()

canvas.create_text(200, 150, text="Ahoj")

pouzitie prikazu canvas.create_text() - program

tkinter simple text example

pouzitie prikazu canvas.create_text() - výstup

Cyklus FOR

V programe častokrát potrebujeme nejaký príkaz alebo skupinu príkazov vykonať viackrát za sebou. Napríklad by sme mohli do grafickej plochy kresliť 5 červených štvorčekov na náhodnej pozícii. Náš program by mohol vyzerať napríklad takto:

import tkinter
import random

canvas = tkinter.Canvas(width=400, height=300)
canvas.pack()

x = random.randint(0, 390)
y = random.randint(0, 290)
canvas.create_rectangle(x, y, x+10, y+10, fill="red")

x = random.randint(0, 390)
y = random.randint(0, 290)
canvas.create_rectangle(x, y, x+10, y+10, fill="red")

x = random.randint(0, 390)
y = random.randint(0, 290)
canvas.create_rectangle(x, y, x+10, y+10, fill="red")

x = random.randint(0, 390)
y = random.randint(0, 290)
canvas.create_rectangle(x, y, x+10, y+10, fill="red")

x = random.randint(0, 390)
y = random.randint(0, 290)
canvas.create_rectangle(x, y, x+10, y+10, fill="red")

Opakujúcu sa časť kódu môžeme umiestniť do cyklu FOR:

import tkinter
import random

canvas = tkinter.Canvas(width=400, height=300)
canvas.pack()

for i in range(50):
	x = random.randint(0, 390)
	y = random.randint(0, 290)
	canvas.create_rectangle(x, y, x+10, y+10, fill="red")

Všimnite si syntax pre cyklus FOR, dôležitý je riadok for i in range(50):. Cyklu sa budeme venovať bližšie na nasledujúcich hodinách, teraz je najdôležitejším prvkom v tomto riadku číslo v zátvorke - určuje, koľkokrát sa cyklus vykoná - počet iterácií cyklu. Pod týmto riadkom nasleduje telo cyklu - skupina príkazov, ktoré sa vykonajú stanovený počet krát. Príkazy v tele cyklu sú odsadené 1 tabulátorom - podobne ako pri definícii procedúry je tento tabulátor dôležitý - podľa neho Python vie, ktoré príkazy sú súčasťou tela cyklu a ktoré už nie.

Práca na hodine