Python clasa a 9-a · Manual Python
Laborator Python
LECȚIE · CAPITOLUL 5

5.2. Widgeturi de bază

Label, Button, Entry, Text și MessageBox

AFIȘEAZĂ
→
INTRODU
→
ACȚIONEAZĂ
→
COMUNICĂ
01
OBIECTIVE

La finalul lecției vei putea...

01

Explici widgetul

Identifici rolul unui widget într-o interfață.

02

Construiești componente

Folosești Label, Button, Entry și Text.

03

Comunici cu utilizatorul

Folosești MessageBox pentru mesaje.

04

Legi acțiuni

Asociezi un Button unei funcții definite de utilizator.

✓
Checkpoint

Care widget este destinat unei singure linii de text?

02
EXPLICAȚIE

Widgeturi pentru comunicarea cu utilizatorul

După fereastra principală, avem nevoie de componente vizuale prin care aplicația comunică cu utilizatorul. În Tkinter acestea sunt numite widgeturi.

Label

Label afișează un text sau o informație care nu trebuie introdusă de utilizator.

Button

Button reprezintă o acțiune. Prin command putem lega butonul de o funcție.

Entry

Entry este destinat introducerii unui text pe o singură linie. În această lecție îl construim; citirea prin get() va fi introdusă în lecția 5.3.

Text

Text permite introducerea sau afișarea unui volum mai mare de text, pe mai multe linii.

MessageBox

Prin tkinter.messagebox putem afișa ferestre de dialog, de exemplu un mesaj de informare.

✓
Checkpoint

De ce command=salut este diferit de command=salut()?

03
EXEMPLU INTUITIV

Fiecare widget are o responsabilitate

Într-un formular, componentele nu fac același lucru: unele afișează informații, altele primesc date, iar altele declanșează acțiuni.

Identifică widgetul

Apasă situația și verifică dacă ai ales componenta potrivită.

Butonul în acțiune

Apasă butonul. Observă că acțiunea este separată de simpla afișare a lui.

04
PYTHON

Construim widgeturile

Label și Button

def salut():
    print("Bun venit!")

tk.Label(root, text="Bun venit!").pack()
tk.Button(root, text="Salut", command=salut).pack()

Entry și Text

nume = tk.Entry(root)
nume.pack()

mesaj = tk.Text(root, height=5, width=40)
mesaj.pack()

MessageBox

from tkinter import messagebox

def salut():
    messagebox.showinfo("Salut", "Bine ai venit la club!")

Apasă butonul

În exemplul de mai jos, funcția este legată de buton.

Observă

Butonul declanșează o acțiune; Label doar afișează informație.

05
ALGORITM / PSEUDOCOD

Structura unei interfețe simple

ALGORITM InterfataDeBaza
    importă Tkinter
    importă MessageBox dacă sunt necesare mesaje
    definește funcțiile asociate acțiunilor
    creează fereastra principală
    creează widgeturile necesare
    plasează widgeturile în fereastră
    pornește bucla principală
SFÂRȘIT ALGORITM
06
ATENȚIE!

Erori frecvente

command=salut

Este corect pentru asocierea funcției. command=salut() execută funcția imediat.

Widgetul nu este fereastra

MessageBox este un dialog, nu un înlocuitor pentru fereastra principală creată prin Tk().

Nu folosi get() încă

Citirea valorii din Entry este construită explicit în lecția 5.3.

07
EXEMPLU REZOLVAT

Clubul de programare

Problemă

Realizează o interfață care afișează titlul „Clubul de programare”, o zonă de text și un buton „Salut”. La apăsarea butonului se afișează un MessageBox cu mesajul „Bine ai venit la club!”.

Ideea de rezolvare

Creăm fereastra, apoi Label, Text și Button. Funcția asociată butonului apelează messagebox.showinfo().

Analiză

Intrare: apăsarea butonului. Ieșire: afișarea unui mesaj. Date vizuale: titlu, Text și Button.

Algoritm/pseudocod

definește funcția salut
    afișează mesajul de informare
creează fereastra
creează și plasează Label și Text
creează Button cu funcția salut
pornește bucla principală

Python

import tkinter as tk
from tkinter import messagebox

def salut():
    messagebox.showinfo("Salut", "Bine ai venit la club!")

root = tk.Tk()
root.title("Clubul de programare")
root.geometry("500x300")
tk.Label(root, text="Clubul de programare").pack()
tk.Text(root, height=6, width=45).pack()
tk.Button(root, text="Salut", command=salut).pack()
root.mainloop()

Urmărirea variabilelor

MomentEvenimentRezultat
InițializareSe creează rootFereastra principală există.
ConstruireSe creează Label, Text și ButtonComponentele sunt pregătite.
InteracțiuneUtilizatorul apasă „Salut”Se execută salut().
showinfoMessageBoxApare fereastra de informare.

Testare

TestAcțiuneRezultat așteptat
Caz normalApasă „Salut”Apare mesajul.
Caz particularÎnchide dialogulRevii la fereastra principală.
Valoare relevantăApasă de mai multe oriDialogul apare la fiecare apăsare.
Justificarea soluției: funcția este transmisă prin command și este executată numai la apăsarea butonului.
08
EXERCIȚII DE BAZĂ

Aplică direct

  1. Construiește o interfață cu un Label care afișează „Clubul meu”.
  2. Creează un Button care afișează un mesaj în consolă.
  3. Creează un formular cu Label, Entry și Text.
  4. Folosește un MessageBox pentru un mesaj de informare.
  5. Construiește o interfață cu două butoane care apelează două funcții diferite.
09
EXERCIȚII DE APROFUNDARE

Combină widgeturile

  1. Realizează o interfață care conține un titlu, un Entry, un Text și două Button-uri.
  2. Construiește „Panoul clubului” cu Label, Entry, Text, două Button-uri și un MessageBox.
  3. Explică de ce command=salut() nu produce același comportament ca command=salut.
  4. Compară rolurile Label, Entry și Text într-o interfață.
  5. Propune două acțiuni diferite care pot fi asociate unor butoane.
10
VERIFICARE

Quiz final

1. Ce widget afișează, în mod obișnuit, un text sau o etichetă?

2. Ce widget este potrivit pentru o singură linie introdusă de utilizator?

3. Ce widget permite introducerea unui text pe mai multe linii?

4. Ce proprietate asociază unui Button o funcție care va fi executată la apăsare?

5. Ce rol are MessageBox?

6. Care variantă transmite funcția, fără să o execute imediat?

11
MINI-PROIECT

Panoul clubului

MISIUNE

Panoul clubului

Construiește „Panoul clubului”: Label, Entry, Text, două Button-uri și un MessageBox. Organizează componentele logic și explică rolul fiecăruia.

  1. folosește un Label pentru informație;
  2. folosește un Entry pentru o linie de text;
  3. folosește Text pentru mai multe linii;
  4. creează două butoane cu acțiuni distincte;
  5. folosește un MessageBox pentru un mesaj către utilizator.

Criterii

Widgeturi corecte01
Acțiuni02
MessageBox03
Organizare04
Explicație05

Ai terminat lecția?

Verifică rolul fiecărui widget și acțiunile butoanelor înainte de finalizare.