[英]How to make a countdown timer for a certain time and date in python?
我正在使用 python 和 tkinter 為下一次 spacex 發射開發倒計時計時器。 計時器應該在 2020-05-30, 22:30 CEST 結束。 我希望它每秒更新一次 HOURS:MINUTES:SECONDS。 我試過了,但我能想到的就是這個,它仍然給我一個錯誤。
import tkinter as tk
from datetime import datetime
import time
HEIGHT = 250
WIDTH = 1000
def timer():
spacex = datetime(2020, 5, 30, 22 - 1, 30, 0).timestamp()
dif = spacex - time.time()
# H:M:S
while (dif >= 0):
dif = spacex - time.time()
textline = str(dif // 3600)[:2] + ":" + str((dif // 60) % 60)[:2] + ":" + str((dif // 1) % 60[:2]
time.sleep(1)
v = str(textline)
label["text"] = v
# TKINTER BELOW
root = tk.Tk()
canvas = tk.Canvas(root, height=HEIGHT, width=WIDTH)
canvas.pack()
frame = tk.Frame(root, bg="#808080", bd=20)
frame.place(relwidth=0.6, relheight=0.4, relx=0.2, rely=0.25)
button = tk.Button(root, text="See timer!", font="Arial", command=lambda: timer())
button.place(relheight=0.1, relwidth=0.1)
label = tk.Label(frame, font="Arial")
label.place(relwidth=1, relheight=1)
root.mainloop()
直接錯誤是這一行缺少str()
的右括號:
... + str((dif // 1) % 60[:2]
但是,當我們這樣做時,讓我們使用 tkinter 自己的計時機制而不是循環和sleep()
,並使用 Python 提供的時間格式化函數。 並提高字體大小:
import tkinter as tk
from datetime import datetime
import time
WIDTH, HEIGHT = 1000, 250
def timer():
space_x = datetime(2020, 5, 30, 22 - 1, 30, 0).timestamp()
delta = space_x - time.time()
if delta >= 0:
label["text"] = time.strftime("%d day(s), %H:%M:%S", time.localtime(delta))
root.after(1000, timer)
root = tk.Tk()
canvas = tk.Canvas(root, height=HEIGHT, width=WIDTH)
canvas.pack()
frame = tk.Frame(root, bg="#808080", bd=20)
frame.place(relwidth=0.6, relheight=0.4, relx=0.2, rely=0.25)
button = tk.Button(root, text="See timer!", font="Arial", command=timer)
button.place(relheight=0.1, relwidth=0.1)
label = tk.Label(frame, font=("Arial", "24", "bold"))
label.place(relwidth=1, relheight=1)
root.mainloop()
以這種方式使用strftime()
只能在一個月前使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.