При повторном добавлении и удалении лейблов появляется ошибка "Exception in Tkinter callback"

Мне надо сделать так, чтобы был слайдер с возможностью выбора от 0 до 8. Например, если пользователь ставит число 6, создается 6 точек и (если до этого было точек больше) удаляются остальные. Первые 2-3 раза вызов функции работает отлично, но после - ошибка: Exception in Tkinter callback. Traceback (most recent call last). Я совершенно не могу понять в чем проблема, пытался решить наверное уже часа 2, так что задаю вопрос здесь.

Код:

from tkinter import *
import random

dots = 3

def randomizer():
    a = random.randint(0, 900)
    b = random.randint(0, 500)
    return a,  b

def set_dots():
    global dots
    print(dots_slider.get())
    if dots_slider.get() > dots:  # Создание точек
        for i in range(dots_slider.get()):
            x, y = randomizer()
            aim_dots[i].place(x=x, y=y)

    if dots_slider.get() < dots:  # Удаление точек
        for i in range(8 - dots_slider.get()):
            aim_dots[-i].destroy()
    dots = dots_slider.get()

if __name__ == '__main__':
    window = Tk()
    window.title("Aim trainer")
    window.geometry('1140x660')
    window.config(cursor='crosshair', bg='#444444')

    aim_zone = Frame(window, height=600, width=1000, bg='#DDDDDD', bd=4, relief=RAISED)
    aim_zone.place(x=0, y=0)
    info_zone = Frame(window, height=600, width=128, bg='#BBBBBB', bd=4, relief=RAISED, cursor='left_ptr')
    info_zone.place(x=1000, y=0)

    aim_dot1 = Label(aim_zone, width=2, height=1, bg='blue')
    aim_dot2 = Label(aim_zone, width=2, height=1, bg='blue')
    aim_dot3 = Label(aim_zone, width=2, height=1, bg='blue')
    aim_dot4 = Label(aim_zone, width=2, height=1, bg='blue')
    aim_dot5 = Label(aim_zone, width=2, height=1, bg='blue')
    aim_dot6 = Label(aim_zone, width=2, height=1, bg='blue')
    aim_dot7 = Label(aim_zone, width=2, height=1, bg='blue')
    aim_dot8 = Label(aim_zone, width=2, height=1, bg='blue')

    aim_dots = (aim_dot1, aim_dot2, aim_dot3, aim_dot4, aim_dot5, aim_dot6, aim_dot7, aim_dot8)

    slider_label = Label(info_zone, text="Dots amount:", font=('Comic Sans', 16), width=9, padx=8)
    slider_label.pack(side=TOP)
    dots_slider = Scale(info_zone, from_=8, to=0, length=123, orient=HORIZONTAL, tickinterval=4)
    dots_slider.pack(side=TOP)
    dots_button = Button(info_zone, text='Set this amount', command=set_dots)
    dots_button.pack()

    window.mainloop()

Консоль:

5
2
7
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Юрий\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "C:\Users\Юрий\PycharmProjects\pythonProject\main.py", line 17, in set_dots
    aim_dots[i].place(x=x, y=y)
  File "C:\Users\Юрий\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 2477, in place_configure
    self.tk.call(
_tkinter.TclError: bad window path name ".!frame.!label"

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