Grafika v Pythonu – knihovna TKinter 2: Tlačítka a akce

knihovna TKinter tlačítka

Tlačítka (objekty třídy Button) jsou jedním z widgetů, které můžeme používat v grafickém rozhraní generovaného s použitím knihovny TKinter. Tlačítko je svázáno s nějakou akcí prostřednictvím parametru command, jemuž předáme jméno podprogramu, který bude akci stisknutí tlačítka obsluhovat.

tlacitko = Button(hlavni_okno, text="AKCE", fg="blue", command=akce1)

Ta musí být definována před deklarací tlačítka v programu, nejjednodušší pro začátek bude, když bude bez parametrů.

def akce1():
  print("Stisknuto tlačítko AKCE")

Konkrétní použití si opět ukážeme na programu, který bude přesouvat po plátně zelený trojúhelník:

Akce tlačítka

from tkinter import *
from random import *

# vytvoření hlavního okna aplikace
hlavni_okno = Tk()

# widget hlavního okna: Popisek hlavního okna a jeho umístění
popisek = Label(hlavni_okno, text=u"GRAFIKA V PYTHONU")
popisek.pack(side=TOP)

# widget hlavního okna: plátno, na které je možné kreslit
platno = Canvas(hlavni_okno, width=256, height=256)
platno.pack()

# objekty, které vkládáme na plátno
x1 = 100
y1 = 100
troj1 = platno.create_polygon(x1, y1, x1-10, y1+10, x1+10, y1+10,fill="green", outline="black")


# Akce tlačítek: něco se stane, když se stiskne tlačítko
def kresli():
  global platno, troj1
  platno.delete(troj1)
  x1 = randint(10, 245)
  y1 = randint(10, 245)
  troj1 = platno.create_polygon(x1, y1, x1-10, y1+10, x1+10, y1+10,fill="green", outline="black")

#  tlačítka hlavního okna a jejich umístění
tlacitko1 = Button(hlavni_okno, text="KONEC", fg="red", command=hlavni_okno.destroy)
tlacitko1.pack(side=RIGHT)

tlacitko2 = Button(hlavni_okno, text="PŘESUŇ!", fg="blue", command=kresli)
tlacitko2.pack(side=LEFT)

# spuštění hlavního okna aplikace
hlavni_okno.mainloop()

Výstup programu pak bude vypadat následovně:

Program vykreslí zelený trojúhelník na zadaných počátečních souřadnicích.

Při stisku tlačítka Přesuň! podprogram kresli():

  • dosavadní trojúhelník z plátna smaže
  • vygeneruje nové souřadnice s pomocí knihovny random
  • trojúhelník znovu vykreslí na nových souřadnicích

Trojúhelník se uchovává jako objekt v globální proměnné, podprogramu ho zpřístupníme direktivou global.

Program lze vynecháním (zakomentováním) jediného řádku změnit tak, že se zelený trojúhelník nepřesouvá, ale duplikuje na plátně. Samozřejmě tak, jak je program nyní postaven, ztrácíme odkazy na jednotlivé objekty, nicméně i to lze následně vyřešit dalšími metodami plátna (Canvas) jako např. platno.find_all().

Nyní už umíme propojit tlačítka s obslužnými akcemi. Příště si přidáme ovládání objektu pomocí událostí klávesnice.