[PYTHON] Tkinter로 GIF 애니메이션 재생 [duplicate]
PYTHONTkinter로 GIF 애니메이션 재생 [duplicate]
나는 Tkinter.PhotoImage를 사용하여 애니메이션 GIF를 재생하려했지만 어떤 성공도 보지 못했습니다. 이미지는 표시하지만 애니메이션은 표시하지 않습니다. 다음은 내 코드입니다.
root = Tkinter.Tk()
photo = Tkinter.PhotoImage(file = "path/to/image.gif")
label = Tkinter.Label(image = photo)
label.pack()
root.mainloop()
그것은 이미지를 창에 표시하고 그 것입니다. 그 문제는 Tkinter와 관련이 있다고 생각합니다. 라벨.하지만 확실하지 않습니다. 솔루션을 찾았지만 모두 PIL (Python Imaging Library)을 사용하라고 말합니다. 사용하고 싶지 않은 것입니다.
대답으로, 나는 더 많은 코드를 만들었고 (아직도 작동하지 않는다 ...), 여기있다 :
from Tkinter import *
def run_animation():
while True:
try:
global photo
global frame
global label
photo = PhotoImage(
file = photo_path,
format = "gif - {}".format(frame)
)
label.configure(image = nextframe)
frame = frame + 1
except Exception:
frame = 1
break
root = Tk()
photo_path = "/users/zinedine/downloads/091.gif"
photo = PhotoImage(
file = photo_path,
)
label = Label(
image = photo
)
animate = Button(
root,
text = "animate",
command = run_animation
)
label.pack()
animate.pack()
root.mainloop()
모든 것에 감사드립니다! :)
해결법
-
==============================
1.Tk에서 직접 애니메이션을 운전해야합니다. 애니메이션 GIF는 하나의 파일에 여러 프레임으로 구성되어 있습니다. Tk는 첫 번째 프레임을로드하지만 이미지를 만들 때 인덱스 매개 변수를 전달하여 다른 프레임을 지정할 수 있습니다. 예 :
Tk에서 직접 애니메이션을 운전해야합니다. 애니메이션 GIF는 하나의 파일에 여러 프레임으로 구성되어 있습니다. Tk는 첫 번째 프레임을로드하지만 이미지를 만들 때 인덱스 매개 변수를 전달하여 다른 프레임을 지정할 수 있습니다. 예 :
frame2 = PhotoImage(file=imagefilename, format="gif -index 2")
모든 프레임을 별도의 PhotoImage에로드 한 다음 타이머 이벤트를 사용하여 표시된 프레임을 전환합니다 (label.configure (image = nextframe)). 타이머 지연으로 애니메이션 속도를 제어 할 수 있습니다. 프레임 수를 초과하면 프레임을 만드는 데 실패한 것 이외에 이미지의 프레임 수를 제공하는 것은 제공되지 않습니다.
공식 단어는 Tk 매뉴얼 페이지를 참조하십시오.
-
==============================
2.다음은 객체를 만들지 않고 간단한 예제입니다.
다음은 객체를 만들지 않고 간단한 예제입니다.
from tkinter import * import time import os root = Tk() frames = [PhotoImage(file='mygif.gif',format = 'gif -index %i' %(i)) for i in range(100)] def update(ind): frame = frames[ind] ind += 1 label.configure(image=frame) root.after(100, update, ind) label = Label(root) label.pack() root.after(0, update, 0) root.mainloop()
from https://stackoverflow.com/questions/28518072/play-animations-in-gif-with-tkinter by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 3.3의 해시 함수는 세션간에 다른 결과를 반환합니다. (0) | 2018.10.14 |
---|---|
[PYTHON] Python2.x에서 print () (함수 버전) 사용하기 (0) | 2018.10.14 |
[PYTHON] 파이썬에서 함수를 타임 아웃하는 방법, 타임 아웃이 1 초 미만입니다. (0) | 2018.10.14 |
[PYTHON] Pandas : dropna 이후 inplace rename을위한 특별한 성능 저하 (0) | 2018.10.14 |
[PYTHON] 십진수 표 변환 (0) | 2018.10.14 |