Обновление индикатора выполнения tkinter до воспроизведения видео - PullRequest
0 голосов
/ 02 июля 2018

У меня есть случай, когда мне нужно привязать индикатор выполнения 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()

`

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