欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Python·助力冬奥:制作冬奥倒计时窗体

时间:2023-08-21

hello,大家好,我是wangzirui32,明天2022北京冬奥会即将开幕,在此预祝冬奥会圆满成功,每位运动员都能取得理想的成绩!

1、开发前准备

一张窗体背景图:

需要安装的包(安装命令):

pip install Pillow

之后,把素材背景图放到项目文件夹,再创建app.py,就可以开始了!

2、项目代码 2.1 引入包 基础设置

import datetimeimport tkinter as tkfrom 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,喜欢的可以点个收藏和关注,我们下次再见!

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。