如何使画布上的文本闪烁?

时间:2021-04-15 15:00:21

标签: python user-interface tkinter

import tkinter as tk
from PIL import ImageTk
flag=True
win=tk.Tk()
def function():
    global flag
    if flag:
        canvas.create_text(134,26,fill="black",font="Times 26 bold",text="Blinking...")
    flag=not(flag)
canvas=tk.Canvas(win)
img=ImageTk.PhotoImage(file=r"images.png")
canvas.create_image(0,0,anchor=tk.NW,image=img)
canvas.pack()
btn=tk.Button(win,text="Click Me To Blink...",command=function)
btn.pack()
win.mainloop()

如何使画布上的文本闪烁? 我尝试创建一个变量 flag 并且:

if flag:
     canvas.create_text(134,26,fill="black",font="Times 26 bold",text="Blinking...")
flag=not(flag)

但是没有用

1 个答案:

答案 0 :(得分:1)

您可以使用 .after(...) 定期调用 function(),然后在“正常”和“隐藏”之间切换画布文本项(应在 function() 之外创建)的状态以模拟闪烁效果:

import tkinter as tk
from PIL import ImageTk

def function(show=False):
    btn.config(state="disabled")
    canvas.itemconfig(text, state="normal" if show else "hidden")
    canvas.after(200, function, not show) # change 200 to other value to adjust the blinking speed

win = tk.Tk()

canvas = tk.Canvas(win)
canvas.pack()

img = ImageTk.PhotoImage(file=r"images.png")
canvas.create_image(0, 0, anchor=tk.NW, image=img)

text = canvas.create_text(134, 26, fill="black", font="Times 26 bold", text="Blinking...")

btn = tk.Button(win, text="Click Me To Blink...", command=function)
btn.pack()

win.mainloop()