Explici widgetul
Identifici rolul unui widget într-o interfață.
Label, Button, Entry, Text și MessageBox
Identifici rolul unui widget într-o interfață.
Folosești Label, Button, Entry și Text.
Folosești MessageBox pentru mesaje.
Asociezi un Button unei funcții definite de utilizator.
Care widget este destinat unei singure linii de text?
După fereastra principală, avem nevoie de componente vizuale prin care aplicația comunică cu utilizatorul. În Tkinter acestea sunt numite widgeturi.
Label afișează un text sau o informație care nu trebuie introdusă de utilizator.
Button reprezintă o acțiune. Prin command putem lega butonul de o funcție.
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 permite introducerea sau afișarea unui volum mai mare de text, pe mai multe linii.
Prin tkinter.messagebox putem afișa ferestre de dialog, de exemplu un mesaj de informare.
De ce command=salut este diferit de command=salut()?
Într-un formular, componentele nu fac același lucru: unele afișează informații, altele primesc date, iar altele declanșează acțiuni.
Apasă situația și verifică dacă ai ales componenta potrivită.
Apasă butonul. Observă că acțiunea este separată de simpla afișare a lui.
def salut():
print("Bun venit!")
tk.Label(root, text="Bun venit!").pack()
tk.Button(root, text="Salut", command=salut).pack()nume = tk.Entry(root)
nume.pack()
mesaj = tk.Text(root, height=5, width=40)
mesaj.pack()from tkinter import messagebox
def salut():
messagebox.showinfo("Salut", "Bine ai venit la club!")
În exemplul de mai jos, funcția este legată de buton.
Butonul declanșează o acțiune; Label doar afișează informație.
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
command=salutEste corect pentru asocierea funcției. command=salut() execută funcția imediat.
MessageBox este un dialog, nu un înlocuitor pentru fereastra principală creată prin Tk().
get() încăCitirea valorii din Entry este construită explicit în lecția 5.3.
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!”.
Creăm fereastra, apoi Label, Text și Button. Funcția asociată butonului apelează messagebox.showinfo().
Intrare: apăsarea butonului. Ieșire: afișarea unui mesaj. Date vizuale: titlu, Text și Button.
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ă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()| Test | Acțiune | Rezultat așteptat |
|---|---|---|
| Caz normal | Apasă „Salut” | Apare mesajul. |
| Caz particular | Închide dialogul | Revii la fereastra principală. |
| Valoare relevantă | Apasă de mai multe ori | Dialogul apare la fiecare apăsare. |
command și este executată numai la apăsarea butonului.command=salut() nu produce același comportament ca command=salut.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?
Construiește „Panoul clubului”: Label, Entry, Text, două Button-uri și un MessageBox. Organizează componentele logic și explică rolul fiecăruia.
Verifică rolul fiecărui widget și acțiunile butoanelor înainte de finalizare.