Retrieving Data from Tkinter Window Retrieving Data from Tkinter Window tkinter tkinter

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:

enter image description here