обновить окно tkinter с помощью gif - PullRequest
0 голосов
/ 01 января 2019
import tkinter as tk
import time
from tkinter import *
from tkinter import messagebox
from time import sleep
from PIL import Image, ImageTk
from itertools import count
from time import sleep

class ImageLabel(tk.Label):

    def load(self, im):
        if isinstance(im, str):
            im = Image.open(im)
        self.loc = 0
        self.frames = []

        try:
            for i in count(1):
                self.frames.append(ImageTk.PhotoImage(im.copy()))
                im.seek(i)

        except EOFError:
            pass

        try:
            self.delay = im.info['10']
        except:
            self.delay = 100

        if len(self.frames) == 1:
            self.config(image=self.frames[0])          
        else:
            for i in range(1):
                self.next_frame()

    def unload(self):
        self.config(image=None)
        self.frames = None

    def next_frame(self):
        if self.frames:
            self.loc += 1
            self.loc %= len(self.frames)
            self.config(image=self.frames[self.loc])
            self.after(self.delay, self.next_frame)

root = tk.Tk()
root.geometry('400x200')
root.title("מערכת הסבת וואלה מייל")
lbl = ImageLabel(root)
lbl.pack()
lbl.load('Logo.gif')

Я запустил этот код, и я не знаю, как обновить выигрыш tkinter после того, как один из них показывает gif.

Может кто-нибудь помочь мне и сказать, как это сделать?Я пробовал много вещей, и я не знаю, что делать.

1 Ответ

0 голосов
/ 01 января 2019

Когда я запускаю эту программу в режиме IDLE, она работает нормально.То, что делает IDLE, чего нет в программе, - это запуск mainloop.Попробуйте добавить в качестве последней строки в программе:

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...