Я хочу, чтобы звук воспроизводился при нажатии кнопки в PyQT5.
Воспроизведение звука представляется блокирующей операцией, поэтому графический интерфейс не отвечает. Поэтому я хочу начать новый поток, воспроизвести звук и удалить поток, все неблокирующим образом.
Я создаю класс потока
class playSoundThread(QtCore.QThread):
def __init__(self, soundpath):
QtCore.QThread.__init__(self)
self.soundpath = soundpath
def __del__(self):
self.wait()
print("Thread exited")
def run(self):
playsound(self.soundpath)
И запускаю его следующим образом
class MainClass(...):
...
def playsound(self, soundKey):
self.thisSoundThread = playSoundThread(self.sounds[soundKey])
self.thisSoundThread.start()
Все отлично работает и неблокирует. Единственная проблема заключается в том, что поток не удаляется, когда перестает воспроизводиться звук. Я пытался вызвать del self.thisSoundThread
, но эта операция, кажется, блокирует, побеждая точку.
Как правильно выйти из потока после завершения неблокирующим способом?