【问题标题】:Why won't it let me delete this string or pack it python为什么它不让我删除这个字符串或打包它 python
【发布时间】:2017-08-18 02:54:39
【问题描述】:

我正在尝试制作一个倒计时到指定时间的计时器,说“点击我”会删除提示,然后继续。我正在尝试使用 time.sleep 将提示保持 1 秒钟然后将其删除,但它一直给我一个错误,即 string 和 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()

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

【问题讨论】:

  • 我不知道 tkinter,但您似乎应该从画布上删除一些东西。 text1 只是画布的字符串表示形式。
  • 也许只是不要打电话给str()
  • @Barmar。这也是我尝试过的,但它仍然给我一个错误
  • 引用 int 没有名为 delete 的属性

标签: python string canvas time tkinter


【解决方案1】:

str 没有delete。即使它有一个,因为str 是不可变对象,它不会就地更改字符串本身。

  • 您需要使用me['text'] = ''重置文本以删除倒计时消息。

  • 如果要使用delete CLICK NOW消息,需要保存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

【讨论】:

  • 非常感谢。这个例子奏效了。它会每天运行吗
  • @Kg123,每天运行这个?这是什么意思?
  • 我制作了这个程序,让它每天在同一时间运行,并在 10:22 说“点击我”。它会每天说“点击我”还是不说?
  • @Kg123,它不会工作,因为你硬编码了selected_date = datetime(2017,3,24,22,22)。您需要相应地更改 if 语句正文中的 selected_date 值。
  • 怎么改成每天。
猜你喜欢
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 2011-11-05
  • 2020-11-08
  • 1970-01-01
相关资源
最近更新 更多