Для воспроизведения видеофайлов в Tkinter можно использовать библиотеку OpenCV. Вот простой пример:
import cv2
import tkinter as tk
from PIL import Image, ImageTk
class VideoPlayer:
def __init__(self, video_file, master=None):
self.cap = cv2.VideoCapture(video_file)
self.master = master
self.canvas = tk.Canvas(master)
self.canvas.pack()
self.delay = int(1000/self.cap.get(cv2.CAP_PROP_FPS))
self.update()
def update(self):
ret, frame = self.cap.read()
if ret:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
self.photo = ImageTk.PhotoImage(image=Image.fromarray(frame))
self.canvas.create_image(0, 0, image=self.photo, anchor=tk.NW)
self.master.after(self.delay, self.update)
else:
self.cap.release()
if __name__ == "__main__":
root = tk.Tk()
player = VideoPlayer("example.mp4", master=root)
root.mainloop()
В этом примере видеофайл открывается с помощью cv2.VideoCapture(). Затем каждый кадр конвертируется в PhotoImage с помощью PIL.ImageTk, и отображается в Canvas с помощью create_image(). Метод update() вызывается рекурсивно через задержку, чтобы обеспечить плавное воспроизведение.
После запуска скрипта откроется окно Tkinter, в котором будет воспроизводиться видеофайл. Когда видео закончится, окно закроется. Вы можете использовать этот пример как отправную точку для создания своего видеоплеера с таймером и другими функциями, которые вам нужны.