Untitled
unknown
plain_text
a year ago
4.2 kB
7
Indexable
def open_view_students_window():
view_window = tk.Toplevel()
view_window.title("View Students by Class")
view_window.geometry("1000x450+400+250") # Increased window height to fit delete button
view_window.configure(bg='#506D85')
school_classes = set(info['school_class'] for info in students.values()) # Prikupljamo sve klase u koje su studenti raspoređeni
label = tk.Label(view_window, text="Select Class to View Students:", bg='#506D85', fg='white', font=FONT_MAIN) # Kreiramo labelu
label.pack(pady=10) # Postavljamo labelu na ekran i dodajemo malo razmaka iznad
selected_class = tk.StringVar(view_window) # Kreiramo promenljivu koja će čuvati izabranu školsku klasu
selected_class.set(next(iter(school_classes))) # Postavljamo početnu vrednost na prvu klasu koja se nalazi u skupu
class_dropdown = ttk.Combobox(view_window, textvariable=selected_class, values=list(school_classes)) # Kreiramo padajući meni
class_dropdown.pack(pady=5) # Postavljamo padajući meni na ekran i dodajemo malo razmaka ispod
# Kreiramo tabelu za prikaz studenata
tree = ttk.Treeview(view_window,
columns=("ID", "First Name", "Last Name", "Address", "Contact", "DOB"), # Definišemo kolone
show='headings') # Ova opcija znači da se ne prikazuje ID u prvom stupcu, već samo zaglavlja
tree.heading("ID", text="ID") # Definišemo naziv svake kolone
tree.heading("First Name", text="First Name")
tree.heading("Last Name", text="Last Name")
tree.heading("Address", text="Address")
tree.heading("Contact", text="Contact")
tree.heading("DOB", text="Date of Birth")
tree.pack(pady=10) # Postavljamo tabelu na ekran i dodajemo malo razmaka ispod
# Funkcija koja će se pozvati kada korisnik pritisne dugme "View Students"
def view_selected_students():
class_to_view = selected_class.get() # Uzima školsku klasu koju je korisnik izabrao
found_students = {id: info for id, info in students.items() if info['school_class'] == class_to_view} # Filtrira studente koji pripadaju izabranoj klasi
for row in tree.get_children(): # Brišemo prethodne podatke u tabeli (ako ih ima)
tree.delete(row)
if not found_students: # Ako nije bilo studenata u toj klasi
messagebox.showinfo("Info", f"No students found in class {class_to_view}.")
else:
# Ako su pronađeni studenti, unosimo ih u tabelu
for student_id, info in found_students.items():
tree.insert("", "end", values=(
student_id, info['first_name'], info['last_name'], info['address'], info['contact'],
info['date_of_birth']))
# Funkcija za brisanje selektovanog studenta
def delete_selected_student():
selected_item = tree.selection() # Dobijamo selektovani red
if not selected_item:
messagebox.showwarning("Warning", "No student selected for deletion.")
return
# Uzima ID selektovanog studenta
student_id = tree.item(selected_item, "values")[0]
# Potvrda brisanja
confirm = messagebox.askyesno("Confirm Delete", f"Are you sure you want to delete student ID {student_id}?")
if confirm:
# Brisanje studenta iz students dictionary-a
del students[student_id]
# Ponovno prikazivanje studenata u tabeli
view_selected_students()
# Kreiramo dugme za prikaz studenata
view_button = tk.Button(view_window, text="View Students", command=view_selected_students, bg='white', width=20)
# Pozicioniramo dugme 100 px od ivice prozora sa leve strane i 20 px od donjeg dela prozora
view_button.place(x=420, y=320)
# Kreiramo dugme za brisanje studenata
delete_button = tk.Button(view_window, text="Delete Selected Student", command=delete_selected_student, bg='white', width=20)
# Pozicioniramo dugme 100 px od ivice prozora sa leve strane i 40 px ispod dugmeta za prikaz studenata
delete_button.place(x=420, y=355)
# Ne koristimo pack() za dugmadi jer koristimo place()
Editor is loading...
Leave a Comment