[英]Retrieving Data from Tkinter Window
我創建了這個 tkinter window 並創建了這些下拉框。
while number != (max+1):
Subject1_Label = Label(master, text=("Subject", number))
Subject1_Label.grid(row=number, column=0, pady=6)
Subject1 = All_Subjects.get(number)
variable = StringVar(master)
variable.set(Subject1[0])
w = OptionMenu(master, variable, *Subject1)
w.grid(row=number, column=1, pady=6)
subject_amount = subject_amount + 1
number = number + 1
通常要確定下拉框中的輸入,我可以簡單地使用 (variable.get),但在這種情況下,變量被使用 5 次以創建 5 個不同的框。 有沒有辦法可以使用 position 在 tkinter window 上從這些下拉框中收集輸入。 比如(variable.get, row=1, column=1)? 還是有什么其他方式?
您可以使用list
或dictionary
來存儲變量。 下面是一個使用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
然后您可以使用variables["Subject 1"].get()
之類的東西來獲取“Subject 1”的選定項。
更新一個例子:
from tkinter import *
# just for providing "All_Subjects.get(number)" in the while loop
class All_Subjects:
subjects = ("math stand", "english standard", "chem", "timber", "child studies")
def get(n):
return All_Subjects.subjects
master = Tk()
max = 5
variables = {}
number = 1
subject_amount = 0
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
def 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:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.