как получить несколько значений радиокнопок - PullRequest
0 голосов
/ 10 декабря 2018

Я планирую иметь динамическое число 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 голосов
/ 10 декабря 2018

Я постараюсь воспроизвести вашу проблему аналогичным образом, и, надеюсь, вы поймете идею.

Что вы можете сделать, это создать список 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...