如何处理没有队列的事件?

2024-04-26 00:56:11 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我在单击事件中更改按钮颜色。它发生在其他事件之后。例如,这里的颜色在声音结束后改变。
我怎样才能修好它

import tkinter as tk
import winsound

def clicked():
    but['background'] = 'red'
    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()

Tags: import声音颜色tkinterdefas事件root
1条回答
网友
1楼 · 发布于 2024-04-26 00:56:11

我认为穿线在这里最好。我能够让它与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()

相关问题 更多 >