K práci s grafikou potřebujeme grafické funkce. Funkce (třídy a jejich metody) jsou sdruženy v knihovnách, modulech. Moduly pro práci s grafikou jsou např. Tkinter, Pygame, Pyglet, Qt (PyQt) atd. Modul musíme na začátku programu importovat (import tkinter nebo from tkinter import * - rozdíly).

Základní postup:

Import modulu – vytvoření instance okna - vytvoření instance třídy Canvas – volání metod Canvas pro vykreslení tvarů – volání hlavní smyčky událostí (smyčka běží dokola a zpracovává frontu událostí). Canvas je tzv. widget, kromě Canvas můžeme do okna umístit i další prvky (Button, Label atd.)

import tkinter
root=tkinter.Tk()     # instance třídy - vytvoření okna
canvas = tkinter.Canvas(width=600,height=400, bg="red") # instance třídy, init parametry
canvas.pack()   #umístí canvas
canvas.create_line(10,10,200,200) # metoda pro vytvoření úsečky s argumenty
canvas.create_text(50,100,text="AHOJ")
root.mainloop()       # hlavní okno v nekonečné smyčce, čeká na události

 

Systém souřadnic pro kreslení v modulu tkinter

Souřadnice x,y                 0,0 je nahoře vlevo        

x vodorovně, hodnota stoupá doprava    y svisle, hodnota stoupá shora dolů:

 

Při tvorbě instance canvas můžeme zadat init parametry width=600, height=400, bg – pozadí a další

Objekty na plátno vykreslujeme voláním metod canvas.create_

create_line()		# úsečka
create_line(x _poč,y_poč, x_kon, y_konc, width, fill)
creale_rectangle(x_poč,y_poč, x_kon, y_konc, width, fill, , outline)# obdélník, čtverec
creale_oval(x_poč,y_poč, x_kon, y_konc, width, fill, outline)	    # elipsa, kruh
create_polygon(x_poč,y_poč… x_kon, y_konc, width, fill)	            # mnohoúhelník
create_text(50,120,text="AHOJ",fill="darkblue",font="Times 20 italic bold") # text
create_arc()		# oblouk, kruhová výseč

Argumenty metod (mají-li v smysl):

x,y – počáteční a koncové souřadnice, u plošných obrazců levý horní a pravý dolní roh obrazce, nebo pomyslného obdélníku, ve které je obrazec vepsán. U polygonu souřadnice každého bodu.

width – šířka obrysu v pixelech

fill – barva výplně (fill="#476a42", fill=“blue“)

outline – barva obrysu

font – druh písma, velikost, řez písma (font="Times 20 italic bold)

Všechny argumenty nemusí být povinné. Existují i další.

 Pro 4.6 a 6.8

import tkinter  # import modulu s graf. funkcemi

okno = tkinter.Tk()         # okno
platno = tkinter.Canvas()   # vytvoř plátno
platno.pack()   # umístí plátno do okna

# Definice funkcí____________
def palka(souradnice):  # souradnice mají složku x a y
    x1 = souradnice.x   # přiřadním hodnoty do proměnných
    y1 = souradnice.y
    x2=x1               # další proměnné pro vytvoření line
    y2=y1+50
    platno.create_line(x1,y1,x2,y2,fill="red",width="5") 

def kolecko(souradnice):  # souradnice mají složku x a y
    x1 = souradnice.x
    y1 = souradnice.y
    x2 = x1+50
    y2 = y1+50
    platno.create_oval(x1,y1,x2,y2,fill="blue",width="1") 

# Hlavní program______
platno.bind("<Button-1>",palka)  # bind - svážu událost stisku tlačítka s voláním funkce
platno.bind("<Button-2>",kolecko)# zapisuje se pouze název fce bez závorek
okno.mainloop()                  # hlavní smyčka programu