Я думаю, что многопоточность здесь будет лучше. Я смог заставить его работать с root.after(10, lambda: winsound.Beep(500, 2000))
, но это было немного, и это все еще блокировало визуальное отображение нажатия кнопки во время звукового сигнала.
Вот вариант с резьбой.
import tkinter as tk
import threading
import winsound
def clicked():
but['background'] = 'red'
threading.Thread(target=win_sound).start()
def win_sound():
winsound.Beep(500, 2000)
root = tk.Tk()
frame = tk.Frame(root)
frame.pack()
but = tk.Button(frame, command=clicked)
but.pack(side=tk.LEFT)
root.mainloop()