Я написал простую программу, которая создает математические задачи умножения.Я написал его как CLI, однако перешел на GUI, так как некоторые учителя говорили, что CLI слишком мал, чтобы ученики могли его видеть.
Все работает, кроме одного.После нажатия кнопки «Пуск» я хочу обновить список слева новым вопросом через 5 секунд.В CLI-версии я просто добавил sleep (5) , который приостановил программу и затем возобновил ее, однако графический интерфейс пользователя останавливает всю программу и ждет, а затем выплевывает все вопросы.
Если я уберу цикл for, учитель может нажать кнопку 15 раз, но это кажется расточительным.
Вот мой код:
from tkinter import *
from tkinter import messagebox
from time import sleep
from random import randint
questionList=[]
def main():
for i in range (15):
num1= randint(0,12)
num2 = randint(1,12)
question = ("Question",(i+1),")",num1,"X",num2)
listbox.insert(END, question)
#sleep(5)
tempArray = []
tempArray.append(num1)
tempArray.append(num2)
questionList.append(tempArray)
def answers ():
for i in range (len(questionList)):
ans = (questionList[i][0]*questionList[i][1])
listbox1.insert(END,ans)
root = Tk()
root.geometry("445x590+460+70")
root.title("Maths Machine")
label = Label(root, text="Maths Machine", font = ("Arial",16)).grid(row = 0, columnspan = 2)
startButton = Button(root, text = "Start", width = 15, command = main).grid(row = 1, column = 1,padx = 10, pady = 10)
label = Label(root, text = "Questions", font = ("Arial",12)).grid(row = 2, column = 0)
label = Label(root, text = "Answers", font = ("Arial",12)).grid(row = 2, column = 1)
listbox = Listbox(root, width = 25, height = 15,font = ("Arial",16))
listbox.grid(row = 3, column = 0)
listbox1 = Listbox(root, width = 10, height = 15,font = ("Arial",16))
listbox1.grid(row = 3, column = 1)
answerButton = Button(root, text ="Show answers", width = 15, command = answers).grid(row = 4, column = 1, padx =10, pady =10)
mainloop()