Как изменить и переместить изображение на холсте tkinter одновременно?

1

внешность функции Я пишу код, который показывает анимацию как Flipbook.

Поэтому этот код должен изменить изображение и одновременно переместить координату. Я написал код. Однако иногда анимация отстает.

Я снял видео анимации, а затем обнаружил проблему.

В моем коде программа сначала меняет координаты, а затем меняет картинку. На самом деле этот код практически не имеет проблем, но иногда он отстает, тогда он будет только перемещать картинку. И через некоторое время это изменит картину. Поэтому я думаю, что мне нужно использовать какую-то функцию, которая может изменить изображение и одновременно перемещать изображение. Есть ли способ понять это?

Вот мой код

import tkinter as tk

class App(object):

    def GUI(self):

        root=tk.Tk()
        root.geometry("600x600")

        self.pic001=tk.PhotoImage(file="picture001.png")
        self.pic002=tk.PhotoImage(file="picture002.png")

        self.canvas = tk.Canvas(bg="black", width=796, height=816)
        self.canvas.place(x=0, y=0)

        self.item=self.canvas.create_image(0, 0, image=self.pic001, anchor=tk.NW)

        self.canvas.move(self.item,-51,10)
        self.canvas.itemconfig(self.item, image = self.pic002)    

        root.mainloop()

app=App()

app.GUI()
  • 0
    Добро пожаловать в StackOverflow. Пожалуйста, прочитайте и следуйте инструкциям публикации в справочной документации, как это было предложено при создании этой учетной записи. Минимальный, полный, проверяемый пример применим здесь. Мы не сможем эффективно помочь вам, пока вы не опубликуете свой код MCVE и точно не опишите проблему. Мы должны быть в состоянии вставить ваш опубликованный код в текстовый файл и воспроизвести проблему, которую вы описали. Для начала, ваш отступ неверен.
  • 0
    что ты имеешь в виду под анимацией? нет анимации в вашем коде
Показать ещё 2 комментария
Теги:
tkinter
tkinter-canvas

1 ответ

0

Вот простой анимационный скрипт.

Я нарисовал 6 изображений, а затем скопировал 5 из них для отражения отскока.

Я рисую новое изображение каждый раз вместо того, чтобы перемещать изображение.

import tkinter as tk
from os import walk


class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.geometry("600x300")
        self.image_names = []
        self.index_tracker = 0
        self.location = 1
        self.canvas = tk.Canvas(self, width=2000)
        self.canvas.pack()
        for(dirpath, dirnames, filenames) in walk('./Flip/'):
            for name in filenames:
                self.image_names.append(tk.PhotoImage(file="{}{}".format(dirpath, name)))

        tk.Button(self, text='Start animation!', command=self.start_animation).pack()

    def start_animation(self):
        if self.location < 80:
            self.canvas.delete('all')
            if self.index_tracker < len(self.image_names):
                self.canvas.create_image(self.location * 10, 75, image=self.image_names[self.index_tracker])
                self.location += 1
                self.index_tracker += 1
                self.after(100, self.start_animation)
            else:
                self.index_tracker = 0
                self.start_animation()


if __name__ == "__main__":
    App().mainloop()

Вы можете получить файлы изображений для этой анимации на моем Github здесь.

Результаты:

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню