如何获得多个单选按钮值

时间:2018-12-10 07:57:35

标签: python tkinter radio-button

我计划使用动态数量的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是从数据库返回的结果。

1 个答案:

答案 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()

enter image description here