簡體   English   中英

從 Tkinter Window 檢索數據

[英]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)? 還是有什么其他方式?

您可以使用listdictionary來存儲變量。 下面是一個使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM