Задать вопрос
  • Почему выдает такую ошибку?

    @frank_sider
    Системный программист
    Ответ на вопрос уже дали в комментариях - в функции Protect убери точку с запятой около последней закрывающей скобки. И конструкций типа if (a) {} else b не используй - при чтении глаза режет, лучше изучи булеву алгебру, чтобы таких конструкций не писать и разберись со скобками
    Ответ написан
    4 комментария
  • В чем проблема?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    #pragma region один раз, #pragma endregion два раза.
    Ответ написан
    Комментировать
  • В чем проблема цикла и библиотеки time?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    У Tkinter есть некий аналог sleep - after, по истечению заданного времени он вызывает нужную функцию.
    Но в твоем случае это бесполезно, потому что ты сначала выполняешь создание объекта, а только затем запускаешь само окно. Ты можешь сделать так:
    for r in range(200, 100, -5):
        print(r)
        canvas.create_circle(725, 500, r, fill="blue", outline="red", width=4)
    
    root.wm_title("Circles and Arcs")
    print(True)
    root.mainloop()

    Как видишь mainloop не запущен, но выполнение функции canvas.create_circle все равно произошло и только потом в консоле отобразится True и прозойдет запуск mainloop
    Хочешь отрисовывать динамично? Тогда как вариант запускать отрисовку можно в отдельном потоке, а уже там хоть time.sleep пихать, вот пример на твоей задаче:
    import tkinter as tk
    from threading import Thread
    from time import sleep
    
    
    class CreateCircle(tk.Tk):
        def __init__(self, width=1000, height=1000, borderwidth=0, highlightthickness=0, bg='black'):
            tk.Tk.__init__(self)
            self.canvas = tk.Canvas(
                self, width=width, height=height, borderwidth=borderwidth,
                highlightthickness=highlightthickness, bg=bg
            )
            self.create_circle_thread = Thread(target=self.create_circle)
            self.create_circle_thread.start()
            self.canvas.pack()
            self.run()
    
        def create_circle(self, x=725, y=500, fill='blue', outline='red', width=4):
            for r in range(200, 100, -5):
                self.__create_circle(x, y, r, fill=fill, outline=outline, width=width)
                sleep(0.2)
        
        def __create_circle(self, x, y, r, **kwargs):
            return self.canvas.create_oval(x-r, y-r, x+r, y+r, **kwargs)
    
        def run(self):
            self.mainloop()
    
    
    cc = CreateCircle()
    Ответ написан