有沒有辦法做到這一點winsound
;這是一個簡單而簡單的模塊。
然而,有一個非常簡單的方法來間接地做到這一點:創建一個後臺線程同步播放聲音,然後設置一個標誌。甚至只是使用線程本身作爲標誌。例如:
import threading
import winsound
t = threading.Thread(target=winsound.PlaySound, args=[sound, flags])
while True:
do_some_stuff()
t.join(0)
if not t.is_alive():
# the sound has stopped, do something
在另一方面,如果你想要做的就是儘快發揮另一種聲音,因爲每一個末端,只是把他們都在一個隊列:
import queue
import threading
import winsound
def player(q):
while True:
sound, flags = q.get()
winsound.PlaySound(sound, flags)
q = queue.Queue()
t = threading.Thread(target=player, args=[q])
t.daemon = True
q.push(a_sound, some_flags)
q.push(another_sound, some_flags)
do_stuff_for_a_long_time()