Untitled
unknown
plain_text
5 months ago
4.2 kB
6
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