Запутался в переменных

Начал пытатся в tkinter. Для начала хотел создать небольшую квест игру которая будет загадывать число а пользователь его отгадывает. Проблема в том, что лейбл при отгадывании накладывается один на другой, и я не понимаю как из одной функции удалить лейбл который обьявлен в другой. Переменная global тоже не помогает. Банальная ошибка, но я не пойму как ее решить?

вот код.

import tkinter
import random

generate_number = random.randint(0, 10)

def game_logic():
    start_label.place_forget()
    if int(ent1.get()) < generate_number:
        number_so_small()
    elif int(ent1.get()) > generate_number:
        number_so_big()
    elif int(ent1.get()) == generate_number:
        number_is_correct()


def number_so_small():
    global lab1
    lab1 = tkinter.Label(text="загаданное число больше чем вы указали", font=("Arial", 10, 'bold'))
    lab1.place(x=90, y=50)


def number_so_big():
    global lab
    lab = tkinter.Label(text='загаданное число меньше чем вы указали', font=("Arial", 10, 'bold'))
    lab.place(x=90, y=50)


def number_is_correct():
    lab.place_forget() //  вот тут ловлю ошибку
    lab1.place_forget() // и вот тут тоже нейм андефайнед
    correct = tkinter.Label(text="молодец!!!", font=("Arial", 10, 'bold'))
    correct.place(x=180, y=50)


window = tkinter.Tk()
datatype = tkinter.IntVar()

entry_w = 480
entry_h = 320
screen_w = window.winfo_screenwidth()
screen_h = window.winfo_screenheight()
window.geometry(f"{entry_w}x{entry_h}"
                f"+{int((screen_w / 2) - (entry_w / 2))}+{int((screen_h / 2) - entry_h)}")

start_label = tkinter.Label(text="Число сгенерировано, приступай!", font=("Arial", 16, 'bold'))
ent1 = tkinter.Entry(window, textvariable=datatype)
but1 = tkinter.Button(text="Ввести число", height=3, width=20, command=game_logic)

but1.place(x=160, y=220)
ent1.place(x=(entry_w / 2) - (5 * 13), y=170)
start_label.place(x=60, y=50)

window.mainloop()

Ответы (1 шт):

Автор решения: CrazyElf

Можете сделать например так, чтобы когда lab и lab1 ещё не заполнены, метод place_forget не вызывался для них:

lab = None
lab1 = None

...
def number_is_correct():
    if lab:
        lab.place_forget()
    if lab1:
        lab1.place_forget()
    correct = tkinter.Label(text="молодец!!!", font=("Arial", 10, 'bold'))
    correct.place(x=180, y=50)

Хотя это всё-равно выглядит как костыль, но работать должно.

→ Ссылка