Я возился с проектом Tkinter, который я закончил пару дней go, и я хотел добавить несколько звуков, чтобы сделать его немного интереснее.
Я добавил звуки кнопок со звуком winsound следующим образом:
(упрощенный код)
import winsound
from Tkinter import *
root = Tk()
canvas = Canvas(root, height=500, width=500)
canvas.pack()
def printtext():
winsound.PlaySound("button.wav", winsound.SND_ALIAS)
print("Hi")
button = Button(root, text=("button"), command=printtext)
button.pack()
root.mainloop()
Это технически работает, но, поскольку код работает синхронно, GUI зависает до Звук воспроизводится полностью.
Чтобы решить эту проблему, я использовал потоки для воспроизведения звука в фоновом режиме, в то время как остальные функции выполняются.
вот так:
(упрощенный код)
import winsound
import threading
from tkinter import *
root = Tk()
canvas = Canvas(root, height=500, width=500)
canvas.pack()
def playsound():
winsound.PlaySound("button.wav", winsound.SND_ALIAS)
threadsound = threading.Thread(target=playsound)
def printtext():
threadsound.start()
print("Hi")
button = Button(root, text=("button"), command=printtext)
button.pack()
root.mainloop()
Опять же, это технически работает, но потоки могут быть запущены только один раз, поэтому я застрял здесь.
Есть ли другой способ добиться этого?