65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
import tkinter as tk
|
|
import time
|
|
from tkinter import messagebox
|
|
|
|
# 创建主窗口
|
|
root = tk.Tk()
|
|
root.geometry("300x400") # 设置窗口大小
|
|
root.title("10秒挑战")
|
|
|
|
bg_image = tk.PhotoImage(file ='十秒挑战.png')
|
|
bg_label = tk.Label(root, image = bg_image)
|
|
bg_label.place(x=0, y=0, relwidth=1, relheight=1)
|
|
|
|
# 初始化运行状态
|
|
flag = False
|
|
|
|
# 定期更新显示时间
|
|
def update_time():
|
|
if flag:
|
|
now = time.time()
|
|
timex = now - start_time
|
|
timex_label.config(text=f"时间:{timex:.3f} 秒\n")
|
|
root.after(10, update_time) # 10ms 后更新一次
|
|
|
|
# 根据当前状态开始或停止计时
|
|
def change():
|
|
global flag, start_time
|
|
|
|
if not flag: # 如果计时尚未开始
|
|
flag = True
|
|
start_time = time.time() # 获取当前时间戳
|
|
update_time() # 开始更新时间显示
|
|
else: # 如果计时已经开始
|
|
flag = False # 停止更新时间显示
|
|
end_time = time.time() # 获取当前时间戳
|
|
timex = end_time - start_time # 计算实际耗时
|
|
goal = 10 # 目标耗时
|
|
|
|
# 计算时间差
|
|
time_difference = abs(timex - goal)
|
|
|
|
# 更新显示
|
|
timex_label.config(text=f"实际时间:{timex:.3f}秒\n误差:{time_difference:.3f}秒")
|
|
|
|
# 显示结果
|
|
if f'{time_difference:.3f}' == '0.000':
|
|
messagebox.showinfo("结果","难以置信!你就是掌控时间的神!")
|
|
else:
|
|
messagebox.showinfo("结果","还差一点点,再接再厉吧!")
|
|
|
|
# 创建标签
|
|
title_label = tk.Label(root, text="10 秒挑战", font=("楷体", 16))
|
|
title_label.pack(pady=(72,10))
|
|
|
|
# 创建时间显示标签
|
|
timex_label = tk.Label(root, text="点击按钮开始挑战\n", font=("楷体", 12))
|
|
timex_label.pack(pady=(22,17))
|
|
|
|
# 创建按钮并设置图片
|
|
btn_photo = tk.PhotoImage(file ='按钮.png')
|
|
btn = tk.Button(root, image=btn_photo, command=change)
|
|
btn.pack(pady=20)
|
|
|
|
# 运行Tkinter主循环
|
|
root.mainloop() |