更新tkinter进度栏,直到播放视频

时间:2018-07-02 11:50:31

标签: tkinter python-3.6 opencv-python

我有一个用例,我需要绑定ttk进度栏,直到播放视频供稿为止。

我已经制作了一个需要容纳视频供稿的父容器和一个小部件(进度条)。我正在使用tk.Label.update()方法在容器中显示我的视频。

此外,我还有一个标志,用于计算显示的帧数。我将其上限设置为60点。此标志还用于设置进度条的变量。

我的视频正在显示,但进度条未显示。谁能帮我解决问题? `

import tkinter as tk
from tkinter import ttk
import time
import cv2
from PIL import Image, ImageTk

MAX = 60

root = tk.Tk()
screen_width,screen_height = root.winfo_screenwidth(),root.winfo_screenheight()
root.geometry('{}x{}'.format(screen_width, screen_height))
progress_var = tk.DoubleVar() #here you have ints but when calc. %'s usually floats
ImageLabel = tk.Label(root, width=screen_width,height=screen_height,)
ImageLabel.pack()
progressbar = ttk.Progressbar(root, variable=progress_var, maximum=MAX)
progressbar.pack(fill=tk.X, expand=1)


def loop_function():

    k = 0
    cap=cv2.VideoCapture("myvideo.avi")
    while k <= MAX:
        val,frame=cap.read()

        if val:
            img = Image.fromarray(frame)
            imgtk = ImageTk.PhotoImage(image=img)
            ImageLabel.imgtk = imgtk
            ImageLabel.configure(image=imgtk)
            progress_var.set(k)
            k += 1
            time.sleep(1)
            root.update()
    cap.release()
    #root.after(100, loop_function)

loop_function()
root.mainloop()

`

0 个答案:

没有答案