Grupezi componente
Folosești Frame pentru împărțirea interfeței în zone logice.
Frame, Canvas, pack, grid, place și get
Folosești Frame pentru împărțirea interfeței în zone logice.
Folosești Canvas pentru linii și forme simple.
Utilizezi pack(), grid() și place() și compari situațiile potrivite.
Folosești Entry.get() și valoarea citită într-o acțiune.
Care metodă organizează componentele în rânduri și coloane?
Pe măsură ce o interfață devine mai complexă, așezarea succesivă cu pack() nu mai oferă întotdeauna controlul necesar. Tkinter prezintă trei metode principale de organizare: pack, grid și place.
Frame este un container. El poate conține alte widgeturi și permite împărțirea ferestrei în zone logice.
Canvas este o suprafață pe care putem desena elemente simple. Coordonatele sunt măsurate, în mod obișnuit, în pixeli, cu originea în stânga-sus.
Așezare simplă, potrivită pentru componente dispuse succesiv.
Așezare în rânduri și coloane.
Poziționează componentele folosind coordonate. Este util când poziția explicită este importantă, dar schimbarea dimensiunii ferestrei poate afecta aspectul.
De la ce valoare încep indicii row și column?
Un formular are, de obicei, etichete și câmpuri aliniate. grid() este potrivit pentru această situație deoarece lucrează cu rânduri și coloane. Frame ne permite să separăm zona de date de zona de acțiuni.
Valoarea nu a fost citită încă.
def afiseaza():
nume = camp_nume.get()
print("Nume:", nume)
tk.Label(root, text="Nume:").grid(row=0, column=0)
camp_nume = tk.Entry(root)
camp_nume.grid(row=0, column=1)
tk.Button(root, text="Afișează", command=afiseaza).grid(row=1, column=0, columnspan=2)
root.mainloop()zona = tk.Frame(root)
zona.pack()
tk.Label(zona, text="Nume").pack()
tk.Entry(zona).pack()canvas = tk.Canvas(root, width=400, height=200)
canvas.pack()
canvas.create_line(20, 20, 380, 20)
canvas.create_rectangle(80, 60, 220, 150)
canvas.create_oval(250, 60, 360, 150)Argumentele padx și pady adaugă spațiu în jurul widgeturilor, iar columnspan=2 permite unui buton să ocupe două coloane.
ALGORITM Formular
importă Tkinter
creează fereastra
creează un Frame pentru date
în Frame creează Label și Entry
creează funcția de prelucrare
citește textul din Entry cu get
prelucrează sau afișează valoarea
creează Button și îl asociază funcției
așază componentele
pornește bucla principală
SFÂRȘIT ALGORITMApasă pașii în ordinea potrivită pentru un formular.
row și columnNumerotarea începe de la 0.
Nu combina, în mod obișnuit, pack() și grid() pentru copiii direcți ai aceluiași container.
get() citește EntryMetoda returnează textul introdus în câmpul curent.
El grupează componentele și permite organizarea separată a unei zone.
Realizează formularul „Date elev” cu câmpurile Nume și Clasă. La apăsarea butonului „Afișează”, programul trebuie să afișeze în consolă valorile introduse.
Folosim grid() pentru două rânduri. Păstrăm cele două Entry în variabile, iar funcția asociată butonului citește valorile cu get().
Intrare: textele introduse în cele două Entry. Acțiune: apăsarea butonului. Ieșire: valorile afișate în consolă.
creează fereastra
creează două Label și două Entry
așază-le cu grid
definește funcția de afișare
citește valorile cu get
afișează valorile
creează Button și asociază funcția
pornește bucla principalăimport tkinter as tk
def afiseaza():
nume = camp_nume.get()
clasa = camp_clasa.get()
print("Nume:", nume)
print("Clasă:", clasa)
root = tk.Tk()
root.title("Date elev")
root.geometry("420x220")
tk.Label(root, text="Nume:").grid(row=0, column=0, padx=5, pady=5)
camp_nume = tk.Entry(root)
camp_nume.grid(row=0, column=1, padx=5, pady=5)
tk.Label(root, text="Clasă:").grid(row=1, column=0, padx=5, pady=5)
camp_clasa = tk.Entry(root)
camp_clasa.grid(row=1, column=1, padx=5, pady=5)
tk.Button(root, text="Afișează", command=afiseaza).grid(row=2, column=0, columnspan=2, pady=10)
root.mainloop()| Test | Date | Rezultat așteptat |
|---|---|---|
| Caz normal | Ana / 9A | Se afișează Ana și 9A. |
| Câmpuri goale | — / — | Se afișează șiruri vide; nu apare eroare din cauza lui get(). |
| Valori cu spații | Ana Maria / 9A | Textul introdus este returnat ca atare. |
| Caz particular | 9A / Ana | Valorile sunt afișate în câmpurile corespunzătoare. |
get() citește conținutul curent al fiecărui Entry, iar funcția este executată numai la apăsarea butonului.grid().get() pentru a afișa în consolă textul dintr-un Entry.pack() și una cu grid(). Compară aspectul.get() și este afișat un mesaj de avertizare.1. Ce rol are Frame?
2. Pentru ce folosim Canvas?
3. Ce metodă organizează componentele în rânduri și coloane?
4. De la ce valori încep, în mod obișnuit, row și column?
5. Ce returnează camp_nume.get() pentru un Entry în care utilizatorul a scris Ana?
6. Ce combinație nu este recomandată pentru copiii direcți ai aceluiași container?
Construiește o interfață cu un Frame pentru date și un Frame pentru acțiuni. Formularul trebuie să conțină cel puțin trei Entry, etichetele lor, un buton „Afișează” și un buton „Curăță”. Folosește grid() pentru formular și o metodă de organizare adecvată pentru zona de butoane. La apăsarea „Afișează”, citește valorile prin get() și afișează-le în consolă.
Verifică organizarea pe zone și faptul că valorile sunt citite numai prin acțiunea asociată butonului.