Nyomógombok és bemeneti mezők
Egy program ablakába elhelyezhetünk különböző elemeket, amikhez a felhasználók hozzá vannak szokva. Ilyen elem például a nyomógomb (button). Most megmutatjuk, hogyan is lehet beállítani, mit csináljon miután rákattintunk.
import tkinter
from random import *
canvas = tkinter.Canvas()
canvas.pack()
def negyzet(x, y, i):
canvas.create_rectangle(x-10, y-10, x+10, y+10)
canvas.create_text(x, y, text=i)
def button1_klikk():
negyzet(randrange(300), randrange(200), randrange(100))
button1 = tkinter.Button(text='Négyzet', command=button1_klikk)
button1.pack()
A tkinter.Button utasítással hozhatunk létre egy új nyomógombot. Ennek a nyomógombnak mi választhatunk nevet (itt button1). A text tulajdonság a nyomógomb felirata, a command pedig, hogy melyik eljárást hajtsa végre a program, ha ráklikkelünk a gombra. Mi definiáltunk egy button1_klikk eljárást, ami tartalmazza az összes utasítást, amit a nyomógombnak végre kell hajtania - véletlen helyre kirajzol egy négyzetet és beleír egy véletlen számot. A button1.pack() utasítás biztosítja, hogy látható legyen a gomb.
Egészítsük ki a programot egy másik nyomógombbal. Ha erre a második gombra kattintunk, akkor rajzoljon ki 10 négyzetet egymás mellé a sorszámukkal együtt.
def button2_klikk():
for i in range(1, 11):
negyzet(i*20, 100, i)
button2 = tkinter.Button(text='Négyzetek', command=button2_klikk)
button2.pack()
Nyomógombon kívül a programunk tartalmazhat bemeneti mezőt (entry) is. Bővítsük tovább a programunkat egy nyomógombbal és egy bemeneti mezővel. Ha a nyomógombra kattintunk, rajzoljon ki egy véletlen négyzetet, és írja bele a szöveget a bemeneti mezőből.
def button3_klikk():
negyzet(randrange(300), randrange(200), entry1.get())
entry1 = tkinter.Entry()
entry1.pack()
button3 = tkinter.Button(text='írj', command=button3_klikk)
button3.pack()
A tkinter.Entry() utasítással lehet létrehozni egy bemeneti mezőt. A pack() utasítás biztosítja itt is, hogy látható legyen. A bemeneti mezőknek mi választhatunk nevet (itt entry1). A beleírt szöveghez az entry1.get() utasítással jutunk.
A következőprogram két bemeneti mezőt és egy nyomógombot tartalmaz. A nyomógomb lenyomására négyzetek sorozatát rajzoljuk ki, bennük egy számmal. A bemeneti mezőkben azt adjuk meg, hogy mettől meddig (kivéve őt magát) legyen a sorozatunk.
Mivel a bemeneti mezőbe beírt szöveg szöveg típus (string) - még ha számjegyeket is írunk be -, ha szám típusként (integer) akarjuk használni, akkor az int() utasítással át kell alakítanunk.
