mirror of
https://github.com/3b1b/manim.git
synced 2025-04-13 09:47:07 +00:00
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
![]() |
from scene import *
|
||
|
import Tkinter
|
||
|
from PIL import ImageTk, Image
|
||
|
|
||
|
class TkSceneRoot(Tkinter.Tk):
|
||
|
def __init__(self, scene):
|
||
|
if scene.frames == []:
|
||
|
raise str(scene) + " has no frames!"
|
||
|
self.scene = scene
|
||
|
Tkinter.Tk.__init__(self)
|
||
|
|
||
|
self.height, self.width = scene.shape
|
||
|
kwargs = {"height" : self.height, "width" : self.width}
|
||
|
self.frame = Tkinter.Frame(self, **kwargs)
|
||
|
self.frame.pack()
|
||
|
self.canvas = Tkinter.Canvas(self.frame, **kwargs)
|
||
|
self.canvas.configure(background='black')
|
||
|
self.canvas.place(x=-2,y=-2)
|
||
|
|
||
|
self.frame_index = 0
|
||
|
self.num_frames = len(self.scene.frames)
|
||
|
self.frame_duration_in_ms = int(1000*scene.frame_duration)
|
||
|
# self.after(0,self.show_new_image)
|
||
|
while(1):
|
||
|
self.frame_index = 0
|
||
|
self.show_new_image()
|
||
|
self.mainloop()
|
||
|
|
||
|
|
||
|
|
||
|
def show_new_image(self):
|
||
|
self.frame_index += 1
|
||
|
if self.frame_index >= self.num_frames:
|
||
|
return
|
||
|
frame = self.scene.frames[self.frame_index]
|
||
|
|
||
|
image = Image.fromarray(frame).convert('RGB')
|
||
|
image.resize(self.frame.size())
|
||
|
photo = ImageTk.PhotoImage(image)
|
||
|
self.canvas.delete(Tkinter.ALL)
|
||
|
self.canvas.create_image(
|
||
|
0, 0,
|
||
|
image = photo, anchor = Tkinter.NW
|
||
|
)
|
||
|
self.after(self.frame_duration_in_ms, self.show_new_image)
|
||
|
self.update()
|