Nyomógombok és bemeneti mezők

2019.11.11

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.

© 2023 Minden jog fenntartva.
Az oldalt a Webnode működteti
Készítsd el weboldaladat ingyen! Ez a weboldal a Webnode segítségével készült. Készítsd el a sajátodat ingyenesen még ma! Kezdd el