hello,大家好,我是wangzirui32,明天2022北京冬奥会即将开幕,在此预祝冬奥会圆满成功,每位运动员都能取得理想的成绩!
1. 开发前准备
一张窗体背景图:
需要安装的包(安装命令):
pip install Pillow
之后,把素材背景图放到项目文件夹,再创建app.py
,就可以开始了!
2. 项目代码
2.1 引入包 基础设置
import datetime
import tkinter as tk
from PIL import Image, ImageTk
# 奥运会时间
OWG_time = "2022/02/04 20:00:00"
# 将时间转为datetime对象
OWG_datetime = datetime.datetime.strptime(OWG_time, "%Y/%m/%d %H:%M:%S")
2.2 窗体初始化代码
class Window(tk.Tk):
def __init__(self):
super().__init__()
# 基本窗体设置
self.title("冬奥会倒计时")
self.geometry("800x400") # 窗体大小
# 字体类别 大小设置
# 注意:这里使用的是Windows 10系统的自带字体
self.title_label_font = ("SimHei", 45) # 45大小
self.time_label_font = ("SimHei", 30) # 30大小
self.canvas = tk.Canvas(self, width=800, height=400) # 创建长800,高400的画布
self.photo = ImageTk.PhotoImage(Image.open("bg.jpg").resize((800, 400))) # 背景图
self.canvas.create_image(400, 200, image=self.photo) # 在(400, 200)处绘制背景图
self.show_time() # 显示时间
2.3 显示时间代码
class Window(tk.Tk):
def __init__(self):
super().__init__()
# .......
self.show_time()
def show_time(self):
self.canvas.delete("text") # 删除tag为text的文本
self.canvas.create_text(330, # 文字生成在 330, 40
40,
text="冬奥倒计时",
font=self.title_label_font,
fill="cyan") # 字体颜色青色
# 获取时间差
now_time = datetime.datetime.now()
minus_time = OWG_datetime-now_time # 计算时间
day = datetime.timedelta(days=int(minus_time.days)) # 天数
hour = datetime.timedelta(hours=int((minus_time-day).seconds / 3600)) # 小时
minute = datetime.timedelta(minutes=int((minus_time-day-hour).seconds / 60)) # 分钟
seconds = datetime.timedelta(seconds=int((minus_time-day-hour-minute).seconds)) # 秒数
# 注:以上都是时间差对象
minus_time = "{} 天 {} 时 {} 分 {} 秒".format(int(day.days), # 根据秒数计算时间
int(hour.seconds/3600),
int(minute.seconds/60),
int(seconds.seconds))
self.canvas.create_text(330,
100,
text=minus_time,
font=self.time_label_font,
fill="cyan",
tag="text") # tag(标签)设定为text
self.canvas.pack() # 显示画布
self.after(1000, self.show_time) # 每隔1000毫秒(1秒)刷新一次时间
2.4 运行代码
if __name__ == "__main__":
app = Window()
app.mainloop()
3. 效果图
好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!