Consola neagră a fost utilă — dar utilizatorii adevărați vor butoane, casete și ferestre. Tkinter e biblioteca standard Python pentru interfețe grafice, iar tot ce știi despre obiecte (Modulul 10!) intră azi în joc.
Fereastra (Tk) e pânza; pe ea așezi widget-uri: etichete (Label), casete (Entry), butoane (Button). Apasă pe orice widget din fereastra de mai jos!
Cele patru pe care le folosești mereu — plus două pe care e bine să le cunoști, exact cum le enumeră programa.
Un widget creat nu apare până nu-l AȘEZI. Sunt trei manageri de aranjare — aceleași 3 widget-uri, trei feluri de a le pune. Comută:
Fereastra e o grilă de pixeli — mici pătrățele luminoase. Colțul din stânga-sus e (0, 0). De acolo, x crește spre DREAPTA, iar y crește în JOS (atenție: y merge în jos, nu ca la matematică!). widget.place(x=150, y=80) pune widget-ul cu colțul lui la 150 pixeli dreapta și 80 pixeli jos.
🎮 trage cursoarele — butonul se mută în fereastra de 240×150:
O interfață grafică nu rulează de sus în jos — așteaptă evenimente (clic!) și reacționează cu funcția legată prin command=. Testează live, apoi învață și lambda, de care ai nevoie la calculator:
📋 program COMPLET și AERISIT — copiază-l pe tot, rulează direct:
▶ demo funcțional — aplicația chiar merge:
Ai văzut mai sus că command= cere numele unei funcții, fără paranteze. Dar ce faci când vrei ca butonul să cheme funcția cu un argument? Aici intră în scenă lambda — o vei folosi imediat, la calculatorul din secțiunea următoare.
O funcție obișnuită are nume, def și return. Un lambda e aceeași idee, comprimată pe un rând: lambda parametri: rezultat. Nu are nume și nu scrii return — rezultatul e chiar expresia de după două puncte.
funcția clasică
exact același lucru, cu lambda
Vrei un buton care adună 5. Prima idee ar fi command=aduna(5) — dar e greșită: cu paranteze, Python execută funcția imediat, la pornirea programului, și îi dă lui command rezultatul (un număr), nu o funcție. Butonul rămâne mort.
✘ greșit
✔ corect, cu lambda
Când creezi butoane într-o buclă (cum vom face la calculator, pentru + − × ÷), apare o surpriză: toate lambda-urile se uită la aceeași variabilă a buclei, iar la final ea are ultima valoare.
✘ fără o=s — toate butoanele fac același lucru
✔ cu o=s — fiecare își îngheață valoarea
Codul de manual e scurt, dar dacă îl rulezi cu litere sau împarți la 0… crapă. Iată versiunea REZISTENTĂ: cu etichete, validare și mesaje de eroare. Click pe orice linie pentru explicație.
▶ aplicația, funcțională — încearcă și cu litere sau ÷ 0:
Cinci întrebări despre lumea ferestrelor.
Tkinter pe scurt.
Diferența a două numere — primul buton al calculatorului tău.
Rezolvă pe pbinfo.ro →x aparține intervalului [a,b]? — perfect pentru un quiz cu buton de verificare.
Rezolvă pe pbinfo.ro →Aici pui totul în practică. Alege UNA din cele trei teme (sau propune-ți una) și construiește o aplicație Tkinter completă, pe etape.
| Criteriu | Punctaj |
|---|---|
| Fereastra pornește și afișează widget-urile corect (layout curat) | 25 p |
| Butoanele reacționează — evenimentele funcționează | 25 p |
| Citirea din casete și logica dau rezultate corecte | 25 p |
| Tratarea erorilor (date greșite, ÷ 0) cu messagebox | 15 p |
| Cod curat, fără repetiții + aspect îngrijit | 10 p |