Вы должны заменить строку:
if Entryfield == Random:
С линией:
if Entryfield.get() == Random['text']:
Это означает, что вместо сравнения виджета Entry
и виджета Label
вы сравниваете текст каждого из них.
Также обратите внимание, что:
from tkinter import *
Должно быть:
from tkinter import *
(это очевидно, вероятно, просто опечатка)
И это, вероятно, поможет вам удалить строку:
root.geometry("800x400")
Без этой строки окно автоматически изменит размеры, чтобы вместить все виджеты.
Также, что строка:
command=lambda: Random.pack_forget() + Begin.pack_forget())
Будет вызывать ошибку при вызове, потому что lambda
не работает так: вы не можете просто добавить функции. Вместо этого я бы создал новую функцию:
def begin_func():
Random.pack_forget()
Begin.pack_forget()
И измените строку на:
command=begin_func)
Наконец, я предполагаю, что вы хотите, чтобы ответ набирался только после нажатия Begin
, для достижения этого вам необходимо изменить:
Entryfield = Entry(f1, font=("Chewy", 22))
Кому:
Entryfield = Entry(f1, font=("Chewy", 22), state=DISABLED)
И добавить следующую строку в begin_func
:
Entryfield.config(state=NORMAL)
В общем, окончательный код должен быть:
from tkinter import *
import random
easy = ['A','V','M','P','O','E']
random.shuffle(easy)
def raise_frame(frame):
frame.tkraise()
def begin_func():
Random.pack_forget()
Begin.pack_forget()
Entryfield.config(state=NORMAL)
root = Tk()
f1 = Frame(root)
f2 = Frame(root)
f3 = Frame(root)
f4 = Frame(root)
for frame in (f1, f2, f3, f4):
frame.grid(row=0, column=0, sticky='news')
Random = Label(f1, text=easy, bg="#00CDCD", font=("Chewy", 20))
Random.pack(side="top", fill="x", pady=20)
Entryfield = Entry(f1, font=("Chewy", 22), state=DISABLED)
Entryfield.pack(pady=105)
Begin = Button(f1, text='Begin', font=("Chewy", 24), bg="#00CDCD",
command=begin_func)
Begin.pack(side="bottom", fill="both")
Submit = Button(f1, text="Submit", bg="#00CDCD", font=("Chewy", 24), command=lambda: winlose())
Submit.pack(fill="x", side="bottom")
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()
raise_frame(f1)
root.mainloop()