Есть такой кусок кода, я использую его, чтобы выводить одновременно текст на экран и воспроизводить нужный мне .mp3 файл. В переменной introductions = строка
import time
import threading
import pyglet
from colorama import init
from colorama import Fore, Back, Style
def WelcomePrintMashin():
for introductions in introduction:
time.sleep(0.05)
print(Fore.CYAN + introductions, end="", flush=True)
def WelcomMusic():
WelcomeSong = pyglet.media.load('music/welcom11.mp3')
WelcomeSong.play()
pyglet.app.run()
def play1():
while time.time() <= start_time:
pass
threading.Thread(target=WelcomMusic()).start()
def play2():
while time.time() <= start_time:
pass
threading.Thread(target=WelcomePrintMashin()).start()
start_time=time.time()+1
threading.Thread(target=play1).start()
threading.Thread(target=play2).start()
Далее мне понадобилось еще раз воспроизвести mp3 файл, я создаю:
VorotaOpenSong = pyglet.media.load('music/vorota_open.mp3')
VorotaOpenSong.play()
pyglet.app.run()
И получаю такую ошибку:
Traceback (most recent call last):
File "D:\PythonProject\CreateYouLife\main.py", line 114, in <module>
pyglet.app.run()
File "D:\PythonProject\CreateYouLife\venv\lib\site-packages\pyglet\app\__init__.py", line 107, in run
event_loop.run()
File "D:\PythonProject\CreateYouLife\venv\lib\site-packages\pyglet\app\base.py", line 162, in run
platform_event_loop.start()
File "D:\PythonProject\CreateYouLife\venv\lib\site-packages\pyglet\app\win32.py", line 89, in start
raise RuntimeError('EventLoop.run() must be called from the same ' +
RuntimeError: EventLoop.run() must be called from the same thread that imports pyglet.app
Правильно ли я понимаю, что pyglet должен запускаться с того же потока, с которого вызывался ранее? Вопрос: как сделать чтобы работало? Я не совсем понимаю, как завершить предыдущие потоки принудительно или как переписать условие, чтобы потоки завершились и очистились сами (если это поможет мне с этой проблемой) В момент когда я вызываю VorotaOpenSong.play() мне не нужно работать с несколькими потоками, мне просто нужно вернуться в режим когда программа работала в одном потоке. Документацию по threading читал, к сожалению не смог найти ответ на свой вопрос. Спасибо!