import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=2000, height=2000, borderwidth=0, highlightthickness=0, bg="black")
canvas.grid()
def _create_circle(self, x, y, r, **kwargs):
return self.create_oval(x-r, y-r, x+r, y+r, **kwargs)
tk.Canvas.create_circle = _create_circle
def _create_circle_arc(self, x, y, r, **kwargs):
if "start" in kwargs and "end" in kwargs:
kwargs["extent"] = kwargs["end"] - kwargs["start"]
del kwargs["end"]
return self.create_arc(x-r, y-r, x+r, y+r, **kwargs)
tk.Canvas.create_circle_arc = _create_circle_arc
for r in range(20, 200, 1):
canvas.create_circle(950, 500, r, fill="blue", outline="", width=4)
root.wm_title("Circles and Arcs")
root.mainloop()
import tkinter as tk
root = tk.Tk()
root.wm_title("Circles and Arcs")
ww = 1000
wh = 1000
sw = root.winfo_screenwidth() #Расположение окна по центру экрана
sh = root.winfo_screenheight() #
wx = (sw - ww)/2 #
wy = (sh - wh)/2 #
root.geometry('%dx%d+%d+%d' % (ww, wh, wx, wy)) #
canvas = tk.Canvas(root, width=ww, height=wh, borderwidth=0, highlightthickness=0, bg="black") #Канвас
canvas.grid()
size_kef = 10 #Кэф изначального размера шарика
grow_kef = 5 #Кэф скорости роста
grow_delay = 100 #Задержка в милисекундах
x0 = ww/2-size_kef #Установка изначального размера шарика
y0 = wh/2-size_kef #
x1 = ww/2+size_kef #
y1 = wh/2+size_kef #
coordx = x0, y0, x1, y1 #
orb = canvas.create_oval(coordx, fill="blue", outline="", width=4) #Шарик
def stop(): #Завершение роста по достижению границ окна
print("stop")
canvas.itemconfig(orb, fill="green")
def grow():
global x0, y0, x1, y1
print((x1-x0))
x0 -= grow_kef #Изменение размера шарика
y0 -= grow_kef #
x1 += grow_kef #
y1 += grow_kef #
coordx = x0, y0, x1, y1 #
canvas.coords(orb, coordx) #
if (x1-x0)<=ww or (y1-y0)<=wh:
canvas.after(grow_delay, grow) #Обращение функции к самой себе через задержку (.after())
if (x1-x0)>=ww or (y1-y0)>=wh: #Здесь ограничение на рост (граница - размеры окна)
stop()
grow() #Первичный вызов функции
root.mainloop()