Заставьте функцию ждать tkinter root .after () l oop до fini sh, прежде чем продолжить выполнение - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть вызов функции playVideo(), которая затем зацикливается на кадры видео, используя tkinter root.after(5, playVideo). После того, как я вызываю playVideo, у меня есть еще немного кода, который обрабатывает список, который заполняется в playVideo. Проблема в том, что этот код выполняется до завершения playVideo l oop.

Есть ли способ заставить программу ждать завершения playVideo () до fini sh, прежде чем продолжить?

def myFunc():
    global myList

    # call to the looping function
    playVideo()

    # some code that handles the list

def playVideo():
    global myList

    ret, frame = currCapture.read()

    if not ret:
        currCapture.release()
        print("Video End")
    else:
        # some code that populates the list

        root.after(5, playVideo)

1 Ответ

1 голос
/ 26 февраля 2020

Вы можете попробовать использовать wait_variable() функцию:

# create a tkinter variable
playing = BooleanVar()

Затем с помощью wait_variable() дождитесь завершения playVideo():

def myFunc():
    global myList
    # call to the looping function
    playVideo()
    # some code that handles the list
    print('Handling list ...')
    # wait for completion of playVideo()
    root.wait_variable(playing)
    # then proceed
    print('Proceed ...')

def playVideo()
    global myList
    ret, frame = currCapture.read()
    if not ret:
        currCapture.release()
        print("Video End")
        playing.set(False) # update variable to make wait_variable() return
    else:
        # some code that populates the list
        root.after(5, playVideo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...