如何在tkinter窗口中显示当前日期

如何在tkinter窗口中显示当前日期,tkinter,python-3.7,Tkinter,Python 3.7,因此,我尝试创建一个tkinter窗口,显示当前时间、日期以及自定义短语。但我遇到的问题是,我似乎无法在第二天刷新日期 我可以传递运行代码时的当前日期,但之后它将变为静态 这是我目前的节目 将tkinter作为tk导入 导入系统 导入时间 导入日历 随机输入 将日期时间导入为dt 从tkinter进口* “词典词组” 短语=[“短语1”、“短语2”、“短语3”] 班级时钟(tk.标签): “”“包含时钟小部件和时钟刷新的类”“” def uuu init uuuu(self,parent=Non

因此,我尝试创建一个tkinter窗口,显示当前时间、日期以及自定义短语。但我遇到的问题是,我似乎无法在第二天刷新日期

我可以传递运行代码时的当前日期,但之后它将变为静态

这是我目前的节目

将tkinter作为tk导入
导入系统
导入时间
导入日历
随机输入
将日期时间导入为dt
从tkinter进口*
“词典词组”
短语=[“短语1”、“短语2”、“短语3”]
班级时钟(tk.标签):
“”“包含时钟小部件和时钟刷新的类”“”
def uuu init uuuu(self,parent=None,seconds=True,colon=False):
"""
创建时钟小部件并将其放置到父元素中
它是一个普通的标签元素,具有两个附加特性。
"""
tk.Label.\uuuuu init\uuuuuuu(自,父)
self.display_seconds=秒
如果self.display_秒:
self.time=time.strftime(“%I:%M:%S%p”)
其他:
self.time=time.strftime(“%I:%M:%S%p”).lstrip('0')
self.display\u time=self.time
self.configure(text=self.display\u time)
如果是冒号:
self.blink_冒号()
self.after(200,self.tick)
def勾选(自我):
“”“每200毫秒更新一次显示时钟”“”
如果self.display_秒:
new_time=time.strftime(“%I:%M:%S%p”)
其他:
new_time=time.strftime(“%I:%M:%S%p”).lstrip('0')
如果是新时间!=自我时间:
self.time=新时间
self.display\u time=self.time
self.config(text=self.display\u time)
self.after(200,self.tick)
def闪烁冒号(自身):
“每秒闪烁冒号”
如果self.display_time中的“:”:
self.display_time=self.display_time.replace(':','')
其他:
self.display_time=self.display_time.replace('',:'',1)
self.config(text=self.display\u time)
self.after(1000,self.blink\u冒号)
类FullScreenApp(对象):
定义初始(自我、主控、**kwargs):
self.master=master
pad=3
自我评价_geom='200x200+0+0'
几何体(“{0}x{1}+0+0”。格式(
master.winfo_屏幕宽度()-pad,master.winfo_屏幕高度()-pad))
主绑定(“”,自切换)
def切换_geom(自身、事件):
geom=self.master.winfo_geometry()
打印(几何图形、自/几何图形)
自学几何(自学几何)
自。_geom=geom
#Root是Tkinter窗口的名称。记住这一点很重要。
root=tk.tk()
#将背景色设置为黑色
root.configure(bg=“黑色”)
#删除顶部的窗口栏,创建真正的全屏显示
root.wm_属性('-fullscreen',true')
按钮(root,text=“Quit”,bg=“black”,fg=“black”,command=lambda root=root:Quit(root)).pack()
#这将显示称为时钟1的时钟
时钟1=时钟(根)
时钟1.pack()
#这给出了时钟格式。
时钟1.配置(bg='黑色',fg='白色',字体=(“helvetica”,125))
#从主机获取日期。
date=dt.datetime.now()
#获取日期并格式化它。
format_date=f“{日期:%a,%b%d%Y}”
#从短语词典中选择随机短语
短语打印=随机选择(短语)
#将日期添加到tkinter窗口
w=标签(根,文本=格式\日期,fg=“白色”,bg=“黑色”,font=(“helvetica”,40))
w、 包()
#将短语添加到tkinter窗口
e=标签(根,文本=短语,fg=“白色”,bg=“黑色”,font=(“helvetica”,28))
e、 包()
root.mainloop()
就像我说的,它只显示一次日期。那么它永远不会改变


提前感谢您的帮助。

它不更新的原因是一个常量值被传递给小部件w。我们需要对此进行更改,以便在每次更新时,小部件都需要通过反复调用函数来更新日期

删除此项:

date = dt.datetime.now()
format_date = f"{date:%a, %b %d %Y}"
w = Label(root, text=format_date, fg="white", bg="black", font=("helvetica", 40))
并添加以下内容:

w = Label(root, text=f"{dt.datetime.now():%a, %b %d %Y}", fg="white", bg="black", font=("helvetica", 40))

非常感谢。这帮了大忙!我很想去,但我没有足够高的声誉。非常抱歉@Megastrik3我的代表足够高,所以我给你加了10分,给moe加了10分。这两个问答都是值得的。