Python 3.x 我怎么做72小时倒计时

Python 3.x 我怎么做72小时倒计时,python-3.x,tkinter,countdown,Python 3.x,Tkinter,Countdown,我正在Tkinte上做一个计时器,但到目前为止,我还没有找到一个实现倒计时的好方法。我试过使用datetime和time,但无法具体进行72小时倒计时。时间不是下降,而是根据机器的本地时间增加。你能帮我吗 代码和图像: import tkinter as tk import time countdown = 259200 class Application(): def __init__(self): self.main = tk.Tk() self.

我正在Tkinte上做一个计时器,但到目前为止,我还没有找到一个实现倒计时的好方法。我试过使用datetimetime,但无法具体进行72小时倒计时。时间不是下降,而是根据机器的本地时间增加。你能帮我吗

代码和图像:

import tkinter as tk
import time

countdown = 259200

class Application():
    def __init__(self):
        self.main = tk.Tk()
        self.main.geometry('700x500')
        self.main.title('')
        self.main.resizable(0,0)
        self.CreateWidgets()
        self.main.mainloop()

    def CreateWidgets(self):
        self.now = tk.StringVar()
        self.framemain = tk.Frame(self.main)
        self.framemainlabel = tk.Frame(self.framemain,bg='black')
        self.frametime = tk.Frame(self.framemain,bg='grey')
        self.frametiming = tk.Frame(self.frametime,bg='red')

        self.timeto = tk.Label(self.frametime,text="TIME LEFT",bg='grey',font=('Trebuchet MS',30),anchor=tk.NW)

        self.time = tk.Label(self.frametime,text=self.now,bg='red',font=('Alarm Clock',100))

        self.framemain.place(relwidth=1,relheight=1)
        self.frametime.place(relwidth=1,relheight=0.8,rely=0.2)
        self.framemainlabel.place(relwidth=1,relheight=0.2)
        self.frametiming.place()

        self.timeto.pack()
        self.time.pack()

        self.Counting()

    def Counting(self):
        t=time.strftime('%I:%M:%S',time.localtime())
        if t!='':
            self.time.config(text=t)
        self.main.after(100,self.Counting)

app = Application()

我已经实现了一个2分2秒的类似倒计时计时器。随附代码如下:

类用户界面(对象):
定义初始(自我、主控、**kwargs):
self.timeLabel=tk.Label(self.master,text=“02:00”,font=(“Times New Roman”,33),wraplength=self.screenwidth)
self.timeRemaining=“02:02”
self.timeLabel.pack()
self.update_timer()
def更新定时器(自身):
self.after\u id=self.master.after(1000,self.update\u计时器)
self.timeRemaining=str(datetime.datetime.strftime(datetime.datetime.strptime)(self.timeRemaining,“%M:%S”)-datetime.timedelta(秒=1),“%M:%S”))
self.timeLabel.config(text=self.timeRemaining)
如果self.timeRemaining==“00:00”:
#这里的退出逻辑

对于72小时的倒计时,我估计strftime的参数会发生变化。

我认为您可以编写一个函数,每次调用它时,剩余时间(以秒为单位)递减1,然后在下一秒调用它自己,如下所示:在这种情况下,我应该将倒计时变量的秒数转换为H:M:s格式。你知道怎么做吗?这个网站上有很多关于tkinter的计时器、时钟和秒表的问题。你做过任何研究吗?我可以通过将计数功能更改为:def Counting(self):if self.countdown>=0:t=datetime.timedelta(seconds=self.countdown)print(t)if t!='':self.time.config(text=t)self.countdown=self.countdown-1 self.main.after(1000,self.Counting)问题是它没有将天设置为时间,所以看起来像“3天,00:00:00”。我不太介意,但如果我实现了一些节省时间的方法,以防用户关闭电脑,在其他时间回来,很难将其转换为字符串,然后再转换为datetime。@RetroNietzsche AFAIK,除了显式转换之外,没有捷径可走。你可以查看一些指针。如果选中第一个答案,则会得到一个datetime对象,可以将其转换为字符串并用于重新初始化。另外,字符串到datetime也不是那么难。如果字符串格式正确,可以使用
strtime