Как на Kivy Python подождать завершения потока

Есть программа на Kivy. В ней есть текстовое поле для ввода текста и кнопка, которая передает этот текст к скрипту, которая синтезирует этот текст. Синтез запускается в потоке, а в самой программе крутится прелоадер, пока синтез не закончится. Так вот, как подождать пока поток не завершится. И только после завершения потока нужно продолжить выполнении программы. Я пробовал использовать join(), но при его использовании программа зависает, т.е. прелоадер не показывается пока поток не завершится. Вот код где запускается поток:

def btn_sound_press(self, instance):
    text = self.txt.text.strip()
    if text != '':
        self.preloader_view.open()
        # Clock.schedule_once(self.v, 0.5)
        text_to_file = normalizator(text)
        with open('file.txt', 'w') as f:
            f.write(text_to_file)

        self.t = threading.Thread(target=thread_f)
        self.t.start()
        # t.join()

        self.event = Clock.schedule_interval(self.v, 1)

        # while self.t.is_alive():
        #   time.sleep(1)

        # self.preloader_view.dismiss()
        if self.sound_load == 0:
            self.sound = SoundLoader.load('samples/test.wav')
            self.sound_load = 1
        if self.sound:
            self.sound.on_stop = self.sound_stop
            if self.sound.state == 'stop':
                self.sound.play()
                self.btn_sound.text = 'Стоп'
                
            else:
                self.sound_stop()

    else:
        self.view.add_widget(Label(text='Вы не ввели текст!!!', font_size = '20', color = [1,0,0,1]))
        self.view.open()

На месте, где идет это

    self.t = threading.Thread(target=thread_f)
    self.t.start()

мне нужно подождать, пока поток завершится и после завершения дальше выполнять код


Ответы (0 шт):