Python每天倒数到一系列时间
我的目标是创建一个倒计时,它将显示一天中某个特定时间之前剩余的分钟和秒数,然后,当达到该时间时,倒计时到下一个时间 到目前为止,我使用datetime.datetime将倒计时到特定的日期和时间,然后停止 我目前有两个问题:如何使用时间倒计时,而不是日期时间,以便每天都一样(即每天倒计时到中午,而不是在特定日期倒计时到中午)。我的第二个问题是如何进入下一次计数(我假设这只是在秒数=0时拉一个新时间的问题,但我不确定) 到目前为止,我的情况如下:Python每天倒数到一系列时间,python,tkinter,time,Python,Tkinter,Time,我的目标是创建一个倒计时,它将显示一天中某个特定时间之前剩余的分钟和秒数,然后,当达到该时间时,倒计时到下一个时间 到目前为止,我使用datetime.datetime将倒计时到特定的日期和时间,然后停止 我目前有两个问题:如何使用时间倒计时,而不是日期时间,以便每天都一样(即每天倒计时到中午,而不是在特定日期倒计时到中午)。我的第二个问题是如何进入下一次计数(我假设这只是在秒数=0时拉一个新时间的问题,但我不确定) 到目前为止,我的情况如下: #!/usr/bin/python from t
#!/usr/bin/python
from tkinter import *
from tkinter import ttk
from tkinter import font
import time
import datetime
global endTime
def quit(*args):
root.destroy()
def show_time():
# Get the time remaining until the event
remainder = endTime - datetime.datetime.now()
# remove the microseconds part
remainder = remainder - datetime.timedelta(microseconds=remainder.microseconds)
# Show the time left
txt.set(remainder)
# Trigger the countdown after 1000ms
root.after(1000, show_time)
# Use tkinter lib for showing the clock
root = Tk()
root.attributes("-fullscreen", True)
root.configure(background='black')
root.bind("x", quit)
root.after(1000, show_time)
# Set the end date and time for the countdown
endTime = datetime.datetime(2017, 9, 19, 9, 0, 0)
fnt = font.Font(family='Helvetica', size=60, weight='bold')
txt = StringVar()
lbl = ttk.Label(root, textvariable=txt, font=fnt, foreground="green", background="black")
lbl.place(relx=0.5, rely=0.5, anchor=CENTER)
root.mainloop()
datetime
工作正常。您需要的是在show_time
函数中使用一个条件语句来更新endTime
import tkinter as tk
from tkinter import ttk
from tkinter import font
import datetime as dt
def quit(*args):
root.destroy()
def show_time():
global endTime
remainder = endTime - dt.datetime.now()
remainder = remainder - dt.timedelta(microseconds=remainder.microseconds)
if remainder.total_seconds() < 0:
y = dt.datetime.now().year
m = dt.datetime.now().month
d = dt.datetime.now().day
endTime = dt.datetime(y, m, d, 9, 0, 0) + dt.timedelta(days=1)
txt.set(remainder)
root.after(1000, show_time)
root = tk.Tk()
root.attributes("-fullscreen", True)
root.configure(background='black')
root.bind("x", quit)
root.after(1000, show_time)
endTime = dt.datetime(2017, 9, 19, 9, 0, 0)
fnt = font.Font(family='Helvetica', size=60, weight='bold')
txt = tk.StringVar()
lbl = ttk.Label(root, textvariable=txt, font=fnt, foreground="green", background="black")
lbl.place(relx=0.5, rely=0.5, anchor='center')
root.mainloop()
使用datetime
和now()
和year
、month
、day
构建下一个结束时间的示例
import tkinter as tk
from tkinter import ttk
from tkinter import font
import datetime as dt
def quit(*args):
root.destroy()
def show_time():
global endTime
remainder = endTime - dt.datetime.now()
remainder = remainder - dt.timedelta(microseconds=remainder.microseconds)
if remainder.total_seconds() < 0:
y = dt.datetime.now().year
m = dt.datetime.now().month
d = dt.datetime.now().day
endTime = dt.datetime(y, m, d, 9, 0, 0) + dt.timedelta(days=1)
txt.set(remainder)
root.after(1000, show_time)
root = tk.Tk()
root.attributes("-fullscreen", True)
root.configure(background='black')
root.bind("x", quit)
root.after(1000, show_time)
endTime = dt.datetime(2017, 9, 19, 9, 0, 0)
fnt = font.Font(family='Helvetica', size=60, weight='bold')
txt = tk.StringVar()
lbl = ttk.Label(root, textvariable=txt, font=fnt, foreground="green", background="black")
lbl.place(relx=0.5, rely=0.5, anchor='center')
root.mainloop()
将tkinter作为tk导入
从tkinter导入ttk
从tkinter导入字体
将日期时间导入为dt
def退出(*参数):
root.destroy()
def show_time():
全局结束时间
余数=endTime-dt.datetime.now()
余数=余数-dt.timedelta(微秒=余数.微秒)
如果剩余。总_秒()<0:
y=dt.datetime.now().year
m=dt.datetime.now().month
d=dt.datetime.now().day
endTime=dt.datetime(y,m,d,9,0,0)+dt.timedelta(天=1)
txt.set(余数)
root.after(1000,显示时间)
root=tk.tk()
属性(“-fullscreen”,True)
root.configure(background='black')
root.bind(“x”,退出)
root.after(1000,显示时间)
endTime=dt.datetime(2017,9,19,9,0,0)
fnt=font.font(family='Helvetica',size=60,weight='bold')
txt=tk.StringVar()
lbl=ttk.Label(根,textvariable=txt,font=fnt,前台=“绿色”,后台=“黑色”)
杠杆位置(relx=0.5,rele=0.5,锚点=中心)
root.mainloop()
您只想让它在每天的同一时间倒数,然后当它达到零时,就开始第二天的倒数,对吗?也就是说,global endTime
并没有做你认为它在做的事情。现在,您的global
没有为您做任何事情。