Retrieving Data from Tkinter Window
You can use list
or dictionary
to store the variables. Below is an example using dictionary
:
variables = {}while number != (max+1): subject = f"Subject {number}" Subject1_Label = Label(master, text=subject) Subject1_Label.grid(row=number, column=0, pady=6) Subject1 = All_Subjects.get(number) variable = StringVar(master) variable.set(Subject1[0]) variables[subject] = variable # save the variable w = OptionMenu(master, variable, *Subject1) w.grid(row=number, column=1, pady=6) subject_amount = subject_amount + 1 number = number + 1
Then you can use something like variables["Subject 1"].get()
to get the selected item of "Subject 1".
Update with an example:
from tkinter import *# just for providing "All_Subjects.get(number)" in the while loopclass All_Subjects: subjects = ("math stand", "english standard", "chem", "timber", "child studies") def get(n): return All_Subjects.subjectsmaster = Tk()max = 5variables = {}number = 1subject_amount = 0while number != (max+1): subject = f"Subject {number}" Subject1_Label = Label(master, text=subject) Subject1_Label.grid(row=number, column=0, pady=6) Subject1 = All_Subjects.get(number) variable = StringVar(master) variable.set(Subject1[0]) variables[subject] = variable # save the variable w = OptionMenu(master, variable, *Subject1) w.grid(row=number, column=1, pady=6) subject_amount = subject_amount + 1 number = number + 1def show_subjects(): # use "Subject X" as key to get the selected subjects for i in range(1, max+1): subject = f"Subject {i}" print(f"{subject}: {variables[subject].get()}") # or simply #print([var.get() for var in variables.values()])Button(master, text="Next", command=show_subjects).grid(column=2, padx=10, pady=10)master.mainloop()
Output: