Остановить поток с помощью триггера tkinter?

Я делаю программу, которая отображает окно сообщений и одновременно воспроизводит файл .wav через поток. Проблема в том, что звуковой файл большой, и я хотел бы, чтобы он перестал воспроизводиться после того, как я нажму «ОК». Любая помощь будет оценена по достоинству. Я использую Python 3.3 в Windows 7. Вот мой код для коробки и звука:

t1 = threading.Thread(target=winsound.PlaySound, args=("C:/Interactive Program/LIP Source Files/skyisup.wav", 2))
t1.start()
lipgui.msgbox("The sky is up!")

person Luke Dinkler    schedule 10.03.2014    source источник
comment
И что на самом деле происходит, когда вы нажимаете «ОК»?   -  person Alok    schedule 11.03.2014
comment
Программа ничего не возвращает в меню, как было сказано в цикле, а звук просто продолжает воспроизводиться!   -  person Luke Dinkler    schedule 11.03.2014
comment
и как вы убиваете звук... пожалуйста, предоставьте более подходящий код   -  person Alok    schedule 12.03.2014
comment
Я попытался остановить поток, запустив t1.join(), но это не сработало. Я также попытался запустить winsound.PlaySound(None, 2), чтобы попытаться остановить звук.   -  person Luke Dinkler    schedule 12.03.2014
comment
Разве метод join не ждет завершения потока? Или это то, что я читал, я на самом деле не использовал его.   -  person Alok    schedule 12.03.2014
comment
Ну, я новичок в программировании, но это то, что я читал. Я также пробовал t1.close() или t1.exit(), не уверенный, что на самом деле это настоящий метод.   -  person Luke Dinkler    schedule 12.03.2014
comment
На самом деле, я тоже новичок :P ... попробуйте найти методы для уничтожения потоков или уничтожения вашего звука ... я думаю, что вы не убиваете звук, может быть, просто поток   -  person Alok    schedule 12.03.2014
comment
Хорошо, посмотрю еще.   -  person Luke Dinkler    schedule 12.03.2014


Ответы (1)


Я починил это. Что мне нужно было сделать, так это передать winsound.SND_ASYNC в winsound.PlaySound() вместо '2'. Затем остановите звук, передав winsound.PlaySound(None, 0)!

person Luke Dinkler    schedule 12.03.2014