Можно, просто получится не движение, а появление в случайном месте, если генерировать координаты X и Y через генератор псевдослучайных чисел. Либо сгенерировав новую точку, и не генерировать следующую, пока круг не дойдет до нее, двигаясь с заданным шагом.
Приветствую вас! Подскажите, пожалуйста, если на экране нарисовать 6 кругов, и один из них будет другого цвета чем остальные. Как можно сделать перемещение закрашенного кружка по всем остальным кругам? типа эффект вращающегося барабана револьвера.
изменение координаты X и Y по окружности. Формула у меня есть на паскале, но ее можно и на питон перевести. Если возникнуть проблем, то пишите - помогу: ua-cam.com/video/dw-CHGUQdpo/v-deo.html
@@AleksejBelkin , Большое спасибо за ответ и за ссылку на видео! Заранее прошу прощения, если в моём вопросе прозвучит ересь, но я только начинаю учиться :-) Если я в tkinter нарисую 6 кругов, как-будто это отверстия барабана, то у меня будет 6 объектов. Может мне поставить цикл рандомный с задержкой времени, в котором у этих объектов будет меняться заливка по очереди? Только вот как эти круги итерировать? Можно ли их спрятать в какой нибудь список?
@@bogdi77 рисуйте объекты через pack - тогда получатся слои, которые можно двигать. Попробуйте что получится, потом кинете ссылку на проект я посмотрю и помогу если потребуется.
Если тебя правильно понял то примерно так для левой клавиши. Думаю для правой сможешь сам сфантазировать))): ------- import random import time from tkinter import * root = Tk() mx = 1000 my = 600 c = Canvas(root, width=mx, height=my) c.pack() cp = 5 sl = 0.0005 color = "#{:06x}".format(random.randint(0, 256 ** 3)) ball = c.create_oval(0, 0, 100, 100, fill=color, outline = color) def b1(event): x = event.x y = event.y lst = [] for i in range(10): j = random.randint(-100, 100) color = "#{:06x}".format(random.randint(0, 256 ** 3)) if i % 2 == 0: lst.append(c.create_oval(x+j, y+j, (x+10)+j, (y+10)+j, fill=color, outline=color)) else: lst.append(c.create_oval(x + j, y - j, (x + 10) + j, (y + 10)-j, fill=color, outline=color)) while True: root.bind('', b1) for i in range((mx - 100) // cp): c.move(ball, cp, 0) root.update() time.sleep(sl) for i in range((my - 100) // cp): c.move(ball, 0, cp) root.update() time.sleep(sl) for i in range((mx - 100) // cp): c.move(ball, -cp, 0) root.update() time.sleep(sl) for i in range((my - 100) // cp): c.move(ball, 0, -cp) root.update() time.sleep(sl) root.mainloop()
Добрый день! А как сделать движение объекта по кругу?
Я на Pascal разбирал: ua-cam.com/video/dw-CHGUQdpo/v-deo.html . Посмотрите, если не понятно будет как на Python реализовать - то запишу новое видео
Здравствуйте. А как сделать вместо геометрической фигуры несколько двигающихся png картинок?
Здравствуйте, вот можете посмотреть код:
github.com/belkinaa/tkinter_animation/tree/main/UA-cam
спасибо !!!
пожалуйста!)
Добрый день, можно ли сделать движение круга не по определенной траектории, а случайным, если да, то как?
Можно, просто получится не движение, а появление в случайном месте, если генерировать координаты X и Y через генератор псевдослучайных чисел. Либо сгенерировав новую точку, и не генерировать следующую, пока круг не дойдет до нее, двигаясь с заданным шагом.
Приветствую вас! Подскажите, пожалуйста, если на экране нарисовать 6 кругов, и один из них будет другого цвета чем остальные. Как можно сделать перемещение закрашенного кружка по всем остальным кругам? типа эффект вращающегося барабана револьвера.
изменение координаты X и Y по окружности. Формула у меня есть на паскале, но ее можно и на питон перевести. Если возникнуть проблем, то пишите - помогу: ua-cam.com/video/dw-CHGUQdpo/v-deo.html
@@AleksejBelkin , Большое спасибо за ответ и за ссылку на видео! Заранее прошу прощения, если в моём вопросе прозвучит ересь, но я только начинаю учиться :-) Если я в tkinter нарисую 6 кругов, как-будто это отверстия барабана, то у меня будет 6 объектов. Может мне поставить цикл рандомный с задержкой времени, в котором у этих объектов будет меняться заливка по очереди? Только вот как эти круги итерировать? Можно ли их спрятать в какой нибудь список?
@@bogdi77 рисуйте объекты через pack - тогда получатся слои, которые можно двигать. Попробуйте что получится, потом кинете ссылку на проект я посмотрю и помогу если потребуется.
@@AleksejBelkin я написал вам в вконтакте сообщение.
как сделать такой же эффект курсора?
это эффект из программы записи. "Отслеживание курсора"
здравствуй, а как можно сделать, чтоб при нажатии ПКМ на окно из точки нажатия как салют вылетали частицы либо какие-то фигуры?
Если тебя правильно понял то примерно так для левой клавиши. Думаю для правой сможешь сам сфантазировать))):
-------
import random
import time
from tkinter import *
root = Tk()
mx = 1000
my = 600
c = Canvas(root, width=mx, height=my)
c.pack()
cp = 5
sl = 0.0005
color = "#{:06x}".format(random.randint(0, 256 ** 3))
ball = c.create_oval(0, 0, 100, 100, fill=color, outline = color)
def b1(event):
x = event.x
y = event.y
lst = []
for i in range(10):
j = random.randint(-100, 100)
color = "#{:06x}".format(random.randint(0, 256 ** 3))
if i % 2 == 0:
lst.append(c.create_oval(x+j, y+j, (x+10)+j, (y+10)+j, fill=color, outline=color))
else:
lst.append(c.create_oval(x + j, y - j, (x + 10) + j, (y + 10)-j, fill=color, outline=color))
while True:
root.bind('', b1)
for i in range((mx - 100) // cp):
c.move(ball, cp, 0)
root.update()
time.sleep(sl)
for i in range((my - 100) // cp):
c.move(ball, 0, cp)
root.update()
time.sleep(sl)
for i in range((mx - 100) // cp):
c.move(ball, -cp, 0)
root.update()
time.sleep(sl)
for i in range((my - 100) // cp):
c.move(ball, 0, -cp)
root.update()
time.sleep(sl)
root.mainloop()
Здравствуйте, а как убрать ошибку invalid command name ".!canvas"
Я видел она у вас тоже есть
Эта ошибка из-за прерывания работы алгоритма после закрытия окна. Ничего страшного нет в этом.
@@AleksejBelkin спасибо огромное
А почему у меня пишет name mix is not defined
Может, mx? Если так, то Вы не объявили в глобальных переменных переменную. В самом начале напишите: mx = 1000
это PyCharm?
да