Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python每天倒数到一系列时间_Python_Tkinter_Time - Fatal编程技术网

Python每天倒数到一系列时间

Python每天倒数到一系列时间,python,tkinter,time,Python,Tkinter,Time,我的目标是创建一个倒计时,它将显示一天中某个特定时间之前剩余的分钟和秒数,然后,当达到该时间时,倒计时到下一个时间 到目前为止,我使用datetime.datetime将倒计时到特定的日期和时间,然后停止 我目前有两个问题:如何使用时间倒计时,而不是日期时间,以便每天都一样(即每天倒计时到中午,而不是在特定日期倒计时到中午)。我的第二个问题是如何进入下一次计数(我假设这只是在秒数=0时拉一个新时间的问题,但我不确定) 到目前为止,我的情况如下: #!/usr/bin/python from t

我的目标是创建一个倒计时,它将显示一天中某个特定时间之前剩余的分钟和秒数,然后,当达到该时间时,倒计时到下一个时间

到目前为止,我使用datetime.datetime将倒计时到特定的日期和时间,然后停止

我目前有两个问题:如何使用时间倒计时,而不是日期时间,以便每天都一样(即每天倒计时到中午,而不是在特定日期倒计时到中午)。我的第二个问题是如何进入下一次计数(我假设这只是在秒数=0时拉一个新时间的问题,但我不确定)

到目前为止,我的情况如下:

#!/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
没有为您做任何事情。