为什么不让它删除这个字符串或打包python

时间:2017-03-25 02:28:05

标签: python string canvas time tkinter

我正在尝试制作一个倒计时到指定时间的计时器"点击我"删除提示然后继续。我试图使用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()

提前感谢您的帮助。我不确定为什么它会继续给我这个错误

1 个答案:

答案 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