我正在尝试制作一个tkinter小部件,该小部件将主动更新。请注意,首先调用countdown()!!我的问题是,一旦我将持续时间输入倒计时,它就会按原样关闭旧窗口小部件(此处未显示)。但是,其中没有倒数计时器的新窗口小部件甚至不会出现。如果我在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)
我希望我能提供足够的信息。如果这里有没有上下文就没有意义的东西,请告诉我。
有任何想法吗?谢谢。
我修改了此方法如何使用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()
(我放了fractional_seconds,以防万一您需要它们...)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句