Графический макет
Привет, мой первый пост здесь! Я впервые кодер, пытающийся выяснить проблему. Любая помощь очень ценится.
Я пытаюсь создать «анимацию», меняя цвета фона («мерцание») из четырех меток. Таким образом, идея состоит в том, чтобы он мигнул пару раз подряд, а затем сделал паузу, чтобы принять ввод пользователя. Этот пользовательский цикл ввода анимации повторяется пару раз.
Я пытался использовать метод after для этого. Но вместо того, чтобы анимировать последовательно, все в конечном итоге сжимается и работает вместе. Другими словами, если я пытаюсь выполнить последовательную анимацию, анимация в первый раз не выполняется до перехода к следующей анимации
В этом разделе создается последовательность анимации.
self.genRandom(3) # generate random sequence of numbers
self.createSchedule(3) #relate the random sequence onto image on screen
self.doanim() #execute animation
self.delay=10000 #delay before beginning next animation
self.after(self.delay, self.genRandom(3))
self.after(self.delay, self.createSchedule(3))
self.after(self.delay, self.doanim())
генерация расписания (связывает порядковый номер с изображениями) (задержка, функция изменения цвета метки)
def createSchedule(self,seqn):
self.schedule.clear()
tuple=(2000, self.labelbegin)
self.schedule.append(tuple)
# (10, lambda: self.associateDigLogo())
for number in self.listSeqn:
# (10, lambda: self.associateDigLogo()
if number == 0:
self.schedule.extend(((1000,lambda: self.buttonpresswhatsapp(None)), (500, lambda: self.buttonreleasewhatsapp(None))))
elif number == 1:
self.schedule.extend(((1000, lambda: self.buttonpressslack(None)), (500, lambda: self.buttonreleaseslack(None))))
elif number == 2:
self.schedule.extend(((1000, lambda: self.buttonpressskype(None)), (500, lambda: self.buttonreleaseskype(None))))
elif number ==3:
self.schedule.extend(((1000, lambda: self.buttonpresssnapchat(None)), (500, lambda: self.buttonreleasesnapchat(None))))
в этом разделе выполняется анимация
def doanim(self):
if len(self.schedule) <= 0:
return
self.sched_item = 0
s = self.schedule[self.sched_item]
#run the function stored in the schedule
print(s[0])
self.after(s[0], self.doanim_helper)
def doanim_helper(self):
s = self.schedule[self.sched_item]
# run the function stored in the schedule
s[1]()
self.sched_item += 1
print(self.sched_item)
if self.sched_item >= len(self.schedule):
self.after(1000, self.quit)
else:
s = self.schedule[self.sched_item]
self.after(s[0], self.doanim_helper)
образец графических функций, названных выше
def buttonpresswhatsapp(self, event):
self.whatsapplabel.config(bg="red")
def buttonreleasewhatsapp(self, event):
self.whatsapplabel.config(bg="white")