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