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

Я делаю карточную программу OMR.но у меня проблема.Я не могу добавить значение радиокнопки в список.Я хочу составить список ответов пользователя и сравнить с реальным ответом, но не могу составить список ответов пользователя.Я думаю, что проверка функции является проблемой.Пожалуйста, помогите мне

from tkinter import *
from tkinter import ttk
from tkinter import messagebox
win = Tk()
win.title("Exam")
win.geometry('1530x300+0+690')

def problem1():
    for i in range(0,10):
        i += 1
        label = Label(win, text='%d.' % i)
        label.grid(column=0, row=i)
        radVar = IntVar()
        r1 = ttk.Radiobutton(win, text="num1", variable=radVar, value=1, command = check)
        r1.grid(column=1, row=i)
        r2 = ttk.Radiobutton(win, text="num2", variable=radVar, value=2, command = check)
        r2.grid(column=2, row=i)
        r3 = ttk.Radiobutton(win, text="num3", variable=radVar, value=3, command = check)
        r3.grid(column=3, row=i)
        r4 = ttk.Radiobutton(win, text="num4", variable=radVar, value=4, command = check)
        r4.grid(column=4, row=i)

def check():
    if radVar.get() == 1 :
        list.append(1)
    elif radVar.get() == 2 :
        list.append(2)
    elif radVar.get() == 3 :
        list.append(3)
    elif radVar.get() == 4 :
        list.append(4)

radVar = IntVar()
list=[]
problem1()
action = ttk.Button(win, text = "check the answer",command = check)
action.grid(column=0, row=11)

win.mainloop()

1 Ответ

0 голосов
/ 12 июня 2018

После долгих размышлений вот мое окончательное решение.Я использовал встроенную функцию Python enumerate для циклического просмотра вопросов, а также использовал счетчик для более эффективного и динамического создания новых радиокнопок.Таким образом, мы добавляем ответы в список по мере их выбора, и мы по-прежнему можем использовать вашу кнопку check the answer для просмотра всех отправленных ответов.

from tkinter import *
from tkinter import ttk

def problem1():
    for i in range(1,5):
        label = Label(win, text='%d.' % i)
        label.grid(column=0, row=i)
    for count, question in enumerate(questions, 1):
        radVar = IntVar()
        for i in range(1,5):
            button = ttk.Radiobutton(win, text="num%d" % i, variable=radVar, value=i, command=check)
            button.grid(row=count, column=i)
        answers.append(radVar)

def check():
    # check submitted answers against correct answers here
    for x in answers:
        print(x.get())

win = Tk()
win.title("Exam")
win.geometry('1530x300+0+690')
questions = ["num1", "num2", "num3", "num4"]
answers = []
problem1()
action = ttk.Button(win, text="check the answer", command = check)
action.grid(column=0, row=5)
win.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...