主动更新Tkinter倒计时

2024-10-01 17:22:57 发布

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

我正在尝试制作一个tkinter小部件,它会主动更新。请注意,先调用countdown()!! 我的问题是,一旦我输入duration进入倒计时,它就会关闭原来的小部件(这里看不到)。然而,新的小部件,其中有倒计时计时器,甚至没有出现。如果我在IDE中点击stop,小部件就会弹出,显示进程停止时剩余的时间。在

def update(start, finish):
    timeRemaining = finish - start
    timeDisplay = Label(text = "%s" % timeRemaining)
    timeDisplay.pack(side = BOTTOM)
    while True:
        #check = timeRemaining.timetuple()
        timeRemaining = str(finish - datetime.datetime.now())
        timeDisplay.config(text=timeRemaining)
        timeDisplay.pack()
        time.sleep(.01)


def countdown(duration):
    root.destroy()
    title = Label(text = "Countdown")
    title.pack()
    duration = float(duration)
    print(duration)
    start = datetime.datetime.now()
    startHours =  int(duration / 60)
    startMinutes = int(duration % 60)
    startSeconds = (((duration%60) - startMinutes)*60)
    finish = start + datetime.timedelta(hours = startHours, minutes = startMinutes, seconds = startSeconds)
    update(start, finish)

我希望我提供了足够的信息。如果这里有什么东西没有上下文就没有意义,让我知道。在

有什么想法吗? 谢谢。在


Tags: textdatetime部件defupdatestartlabelpack
1条回答
网友
1楼 · 发布于 2024-10-01 17:22:57

我修改了这个How to create a timer using tkinter?来做你想做的事情

# for python 3.x use 'tkinter' rather than 'Tkinter'
import Tkinter as tk
import datetime
import math
MINUTE = 60
HOUR = 60*MINUTE
class App():
    def __init__(self):
        self.root = tk.Tk()
        self.done_time=datetime.datetime.now() + datetime.timedelta(seconds=HOUR/2) # half hour
        self.label = tk.Label(text="")
        self.label.pack()
        self.update_clock()
        self.root.mainloop()

    def update_clock(self):
        elapsed = self.done_time - datetime.datetime.now()
        h,m,s,fractional_s = elapsed.seconds/3600,elapsed.seconds/60,elapsed.seconds%60
        fractional_seconds = math.floor(elapsed.microseconds/1000000.0*100)
        self.label.configure(text="%02d:%02d:%02d.%02d"%(h,m,s))
        self.root.after(1000, self.update_clock)

app=App()

(我把分数秒放在你需要的时候…)

相关问题 更多 >

    热门问题