Оператор print()
- хороший стартовый инструмент при устранении неполадок. Если вы потратите время на его использование, вы увидите, что ваше сравнение в ваших if/elif
утверждениях никогда не будет верным.
Например, я добавил несколько строк печати к вашей функции winlose()
следующим образом:
def winlose():
print("The Entryfield is an object called {}".format(Entryfield))
print("The Random label is an object called {}".format(Random))
print("The the content of Entryfield is as string: {}".format(Entryfield.get()))
Вот что мы получаем в консоли:
The Entryfield is an object called .!frame.!entry
The Random label is an object called .!frame.!label
The the content of Entryfield is a string: Test
Похоже, что вы хотите сравнить список easy
с тем, что пользователь вводит в поле ввода. Вы можете сделать это, используя индекс первой позиции в списке и используя get()
в поле ввода.
Попробуйте эту функцию вместо:
def winlose():
if Entryfield.get() == easy[0]:
Win = ("Your answer was correct")
tts = Label(f1, text=Win, font=('Chewy', 20), bg="#00CDCD")
tts.pack()
else:
L = ("Your answer is wrong")
ttr = Label(f1, text=L, font=('Chewy', 20), bg="#00CDCD")
ttr.pack()
Если вы действительно хотите использовать метку в этом сравнении, вам нужно указать, что вы сравниваете текст с меткой, а не сам объект метки.
Эта функция будет выглядеть так:
def winlose():
if Entryfield.get() == Random["text"]:
Win = ("Your answer was correct")
tts = Label(f1, text=Win, font=('Chewy', 20), bg="#00CDCD")
tts.pack()
else:
L = ("Your answer is wrong")
ttr = Label(f1, text=L, font=('Chewy', 20), bg="#00CDCD")
ttr.pack()
Имейте в виду, что сейчас вы будете просто упаковывать новые ярлыки каждый раз, когда нажимаете кнопку, поэтому вам следует попытаться избежать этого. Это можно сделать, уничтожив ярлык или обновив ярлык, вместо того, чтобы создавать новые каждый раз, когда вы нажимаете кнопку.