Обновление координат отрезка на canvas
Моя цель - постоянно обновлять конечную точку отрезка canvas.
Первая точка всегда x = 960, y = 1080. Вторая точка постоянно меняется.
Я уже написал некоторый код, но он не обновляет отрезок.
def TargetLineESP():
if True:
x, y, z = SDK()
pos1, pos2 = W2S(GetVM(), x, y, z, 1920, 1080)
root = Tk()
root.title('ESP')
root.overrideredirect(False)
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.geometry("{0}x{1}+0+0".format(screen_width, screen_height))
root.wm_attributes("-topmost", True)
root.wm_attributes("-transparentcolor", "gray")
canvas = Canvas(root, bg='gray', width=1920, height=1080)
canvas.pack()
canvas.create_line(960, 1080, pos1, pos2, fill='purple', width=5)
canvas.coords(960, 1080, pos1, pos2)
root.mainloop()
TargetLineESP()
Я пытался использовать canvas.update(), canvas.coords(). Мне ничего не помогло. Нужна ваша помощь.
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Периодические действия в tkinter можно делать с помощью метода after:
from tkinter import *
root = Tk()
root.overrideredirect(False)
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.geometry("{0}x{1}+0+0".format(screen_width, screen_height))
root.wm_attributes("-topmost", True)
# root.wm_attributes("-transparentcolor", "gray")
canvas = Canvas(root, bg='gray', width=1920, height=1080)
canvas.pack()
line = canvas.create_line(960, 1080, 0, 0, fill='purple', width=5)
def redraw_line(pos1, pos2):
canvas.coords(line, (960, 1080, pos1, pos2))
pos1 += 20
pos2 += 10
# Запланировать выполнение функции redraw_line через 100 мс с указанными параметрами
root.after(100, redraw_line, pos1, pos2)
redraw_line(0,0)
root.mainloop()