a и b не обновляются. Ваша функция обновляет метку новыми значениями для oldnum1 и oldnum2, но ваша кнопка отправки принимает a и b в качестве аргументов. Бьюсь об заклад, если вы отправите тот же ответ во второй и третий раз, как и в первый раз, он скажет, что вы правы.
Обновление:
Класс определенно усложняет ситуацию, но экспериментирует это хорошо. Вот пример вашего класса, который работает:
class nums:
def __init__(self):
self.assignnewnums()
def check(master,oldnum1,oldnum2,lbltxt,lbl,answer):
getans = answer.get()
if(int(getans)==(oldnum1.value+oldnum2.value)):
oldnum1.assignnewnums()
oldnum2.assignnewnums()
display = Label(master,text="Correct",bg="black",fg="red").pack(side=RIGHT)
lbltxt="What is {} + {}".format(oldnum1.value,oldnum2.value)
lbl.config(text=lbltxt)
else:
display = Label(master,text="Incorrect",bg="black",fg="red").pack(side=RIGHT)
lbltxt="What is {} + {}".format(oldnum1.value,oldnum2.value)
lbl.config(text=lbltxt)
def assignnewnums(self):
self.value=randint(1,100)
assignnewnums теперь изменяет атрибут значения объекта nums. Вы заметите, что вместо создания новых объектов nums в функции проверки мы используем assignnewnums для сохранения этих объектов, а просто присваиваем им новые значения.
Убедитесь, что вы изменили команду Button на nums.check (args ) вместо nums.assignnewnums (args)