我怎样才能让tkinter和时间一起工作呢

2024-04-16 21:22:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图制作一个程序,每24小时用tkinter更新一次文本。 窗口将在没有时间的情况下打开。sleep(),但不会在其处于活动状态时打开。我也尝试了after(),但我不确定我是否正确使用了它(对于编码来说,这是一个全新的概念)

from tkinter import *
import time


obj = Tk()
obj.title("Hey")
obj.geometry("300x300")
wintext = Text(obj)
wintext.insert(INSERT, "I ")
time.sleep(86400)
wintext.insert(INSERT, "LIKE ")
time.sleep(86400)
wintext.insert(INSERT, "CUTE ")
time.sleep(86400)
wintext.insert(END, "CATS :)")
wintext.pack()
obj.mainloop()


from tkinter import *
import time


obj = Tk()
obj.title("Hey")
obj.geometry("300x300")
wintext = Text(obj)
wintext.insert(INSERT, "I ")
wintext.after(3, "LIKE ")
#wintext.insert(INSERT, "CUTE ")
#wintext.insert(END, "CATS :)")
wintext.pack()
obj.mainloop()

但是,我得到了错误

Traceback (most recent call last):
  File "C:/Users/username/PycharmProjects/things/main.py", line 10, in <module>
    wintext.after(3, "LIKE ")
  File "C:\Users\username\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 820, in after
    callit.__name__ = func.__name__
AttributeError: 'str' object has no attribute '__name__'

1条回答
网友
1楼 · 发布于 2024-04-16 21:22:45
from tkinter import *

# import time

obj = Tk()
obj.title("Hey")
obj.geometry("300x300")
wintext = Text(obj)
wintext.insert(INSERT, "I ")

# wintext.after(3, "LIKE ")
wintext.after(3000, lambda: wintext.insert(INSERT, "LIKE "))  # 3 s

# wintext.insert(INSERT, "CUTE ")
# wintext.insert(END, "CATS :)")

wintext.pack()
obj.mainloop()

这似乎有效:after需要一个函数

相关问题 更多 >