更改标签的文字颜色,在按键时更改

时间:2015-11-05 16:37:57

标签: python tkinter

我想更改标签的文字颜色,等待几秒钟,然后在按一个键时将其更改回来。

我的最终目标是制作一个完整的屏幕键盘,突出显示您按下的键。但是,我无法在将文本变为蓝色,然后变回黑色之间暂停功能。我尝试使用time.sleep(2),但似乎在函数的开头就是这样做,而不是我写的顺序。

from tkinter import *
import time

window = Tk()

window.geometry("1000x700")

LabQ = Label(window,text="Q",font=("Courier", 30))

LabQ.place(x=210,y=260)

def key(event):
    LabQ = Label(window,text="Q",fg="ROYALBLUE",font=("Courier", 30))
    LabQ.place(x=210,y=260)
    time.sleep(2)
    LabQ = Label(window,text="Q",font=("Courier", 30))
    LabQ.place(x=210,y=260)

window.bind("<key>", key)

window.mainloop()

1 个答案:

答案 0 :(得分:3)

你有两个问题。一个是你没有改变颜色,你正在创建一个全新的小部件。要更改颜色,您需要在现有小部件上使用configure方法。

其次,当你打电话给sleep确切地知道GUI的作用时 - 它就会睡觉。没有代码正在运行,屏幕无法刷新。作为一般经验法则,GUI永远不应该调用sleep。

解决方案是使用use after来安排将来某些方面的更改:

def key(event):
    bg = LabQ.cget("background")
    LabQ.configure(background="royalblue")
    LabQ.after(2000, lambda color=bg: LabQ.configure(background=color))

此示例没有优雅地处理您在两秒钟内两次键入相同键的情况,但这与在一段时间后如何更改值的核心问题无关