我正在创建一个带有“ for循环”的Tkinter窗口,以便以后可以自行调整时,我决定添加更多问题。我的问题是我无法在选项菜单上保存输入的值。到目前为止,我所得到的只是一个list1 = ['', '', '']
而一个Strg_var = [StringVar, StringVar, StringVar]
,它只显示空格和变量PY_numbers。
import tkinter as tk
from tkinter import *
LARGE_FONT = ("Arial", 12)
window=Tk()
def _save():
print(*list1, sep = ", ")
print(*Strg_var, sep = ", ")
Questionlist = ["A. Is A true? :", "B. Is B true? :", "C. Is C true? :"]
choices = ['-', 'Yes', 'No']
n = 0
Strg_var=[0]*len(Questionlist)
list1=[]
for n in range(len(Questionlist)):
Label(window, text=Questionlist[n], font = LARGE_FONT, background = "white").grid(row= n, column=0, columnspan=2, padx=10, pady = 10, sticky="W")
a = tk.StringVar(window)
OptionMenu(window, a, choices[0], *choices).grid(row = n, column=2, padx=10, sticky="WE")
list1.append(a.get())
tk.Button(window, text="Save", command = _save,width=18).grid(row=16, column=0, padx=10, pady=15, sticky="W")
window.mainloop()
有人可以帮助我解决如何将选项菜单用户选择保存到列表中吗?
答案 0 :(得分:1)
您可以列出StringVar
(初始化它们,我的代码中还没有完成)。每次选择一个选项,相应的项目都会更改。所以我会这样。
import tkinter as tk
LARGE_FONT = ("Arial", 12)
window=tk.Tk()
def _save():
print(list(map(lambda x: x.get(), a)))
Questionlist = ["A. Is A true? :", "B. Is B true? :", "C. Is C true? :"]
choices = ['-', 'Yes', 'No']
a = [tk.StringVar(window) for i in range(len(Questionlist))]
n = 0
for n in range(len(Questionlist)):
tk.Label(window, text=Questionlist[n], font = LARGE_FONT, background = "white").grid(row= n, column=0, columnspan=2, padx=10, pady = 10, sticky="W")
Strg_var = tk.StringVar(window)
tk.OptionMenu(window, a[n], *choices).grid(row = n, column=2, padx=10, sticky="WE")
tk.Button(window, text="Save", command = _save,width=18).grid(row=16, column=0, padx=10, pady=15, sticky="W")
window.mainloop()
输出:
['No', '-', 'Yes']