我正在尝试制作一个倒计时到指定时间的计时器"点击我"删除提示然后继续。我试图使用time.sleep来保持提示1秒然后删除它但它一直给我一个错误,字符串和int都没有命令delete,destroy等。有谁知道为什么这个问题是发生。感谢您提前提供任何帮助
from datetime import datetime
from tkinter import *
import time
tk = Tk()
canvas = Canvas(tk, width=400, height=400)
canvas.pack()
selected_date = datetime(2017,3,24,22,22)
me = Label(tk, font=('Times',45))
me.place(relx=0.5, rely=0.5, anchor=CENTER)
me.pack()
def countdown() :
s = (selected_date - datetime.now()).seconds
me['text']=str(s) + " seconds until click"
if s == 0:
text1 = str(canvas.create_text(200, 200, text="CLICK NOW", font=('Times',45)))
text1.delete()
time.sleep(1)
canvas.after(1000, countdown)
canvas.after(1000, countdown)
tk.mainloop()
提前感谢您的帮助。我不确定为什么它会继续给我这个错误
答案 0 :(得分:1)
str
没有delete
。即使它有一个,因为str
是不可变对象,它不会就地改变字符串本身。
您需要使用me['text'] = ''
重置文字以删除倒计时讯息。
如果您想使用删除现在点击消息,则需要保存create_text
的返回值,并稍后将其传递给canvas.delete
方法。
def countdown() :
s = (selected_date - datetime.now()).seconds
me['text']=str(s) + " seconds until click"
if s == 0:
text1 = canvas.create_text(200, 200, text="CLICK NOW", font=('Times',45))
me['text'] = '' # to delete count down
#### If you want to delete the 'CLICK NOW' message in a second,
#### do the following
# canvas.after(1000, lambda: canvas.delete(text1))
else:
canvas.after(1000, countdown)
顺便说一下,你不需要使用time.sleep
。