我计划使用动态数量的radioButtons作为SQL查询返回给数据库的行数。
如何动态地为RadioButtons编码“变量”,以便在选择时获得所有单选按钮的单独值。
对于从数据库返回的每个结果,我都有一个“是/否”单选按钮。
i = 0
for r in self.results :
print(r)
globals()[r[0]] = tk.IntVar()
R1 = tk.Radiobutton(self.win1, text="Yes", variable=globals()[r[0]], value=1)
R2 = tk.Radiobutton(self.win1, text="No", variable=globals()[r[0]], value=2)
R1.grid( column=2, row=i+2)
R2.grid( column=3, row=i+2)
item_Label = ttk.Label(self.win1, text=r[0])
item_Label.grid(column=0, row=i+2)
resp = globals()[r[0]].get()
print(resp)
i += 1
我收到的错误是“
KeyError: 'object1'
其中object1是从数据库返回的结果。
答案 0 :(得分:1)
我将尝试以类似的方式重现您的问题,希望您能理解。
您可以做的是创建一个IntVar()
列表,该列表将用于查询结果的每一行中使用的每对单选按钮。
import tkinter as tk
win = tk.Tk()
def show_values():
a = " ".join([str(i.get()) for i in values])
tk.Label(win, text=a).grid()
results = ["RB1: ", "RB2: ", "RB3: "]
values = [tk.IntVar() for i in range(len(results))]
i = 0
for r in results:
r1 = tk.Radiobutton(win, text="Yes", variable=values[i], value=1)
r2 = tk.Radiobutton(win, text="No", variable=values[i], value=2)
r1.grid(column=1, row=i)
r2.grid(column=2, row=i)
item_Label = tk.Label(win, text=r)
item_Label.grid(column=0, row=i)
i += 1
tk.Button(win, text='Show Values', command=show_values).grid(columnspan=2)
win.mainloop()