![使用python写一个桌面的gui自定义倒计时_第1张图片](http://img.e-com-net.com/image/info8/df7565de581c48e5879fa17519503192.jpg)
导入包
import tkinter as tk
import time
初始化
def __init__(self, master, minutes=25, seconds=0):
self.master = master
master.title("Countdown Timer")
master.geometry("350x200")
self.minutes = tk.StringVar(value=str(minutes))
self.seconds = tk.StringVar(value=str(seconds))
tk.Label(master, text="分:").grid(row=0, column=0)
tk.Entry(master, textvariable=self.minutes, width=10).grid(row=0, column=1)
tk.Label(master, text="秒:").grid(row=0, column=2)
tk.Entry(master, textvariable=self.seconds, width=10).grid(row=0, column=3)
self.start_button = tk.Button(master, text="开始", command=self.start_timer)
self.start_button.grid(row=3, column=0, pady=10)
self.pause_button = tk.Button(master, text="暂停", command=self.pause_timer, state=tk.DISABLED)
self.pause_button.grid(row=3, column=2, pady=10)
self.remaining_time = 0
self.timer_running = False
self.time_label = tk.Label(master, text="", font=("Arial", 12))
self.time_label.grid(row=1, column=1, pady=10)
self.update_time_label()
self.countdown_label = tk.Label(master, text="", font=("Arial", 20, "bold"))
self.countdown_label.grid(row=5, column=0, columnspan=4, sticky="S", pady=10)
全部代码
import tkinter as tk
import time
class CountdownTimer:
def __init__(self, master, minutes=25, seconds=0):
self.master = master
master.title("Countdown Timer")
master.geometry("350x200")
self.minutes = tk.StringVar(value=str(minutes))
self.seconds = tk.StringVar(value=str(seconds))
tk.Label(master, text="分:").grid(row=0, column=0)
tk.Entry(master, textvariable=self.minutes, width=10).grid(row=0, column=1)
tk.Label(master, text="秒:").grid(row=0, column=2)
tk.Entry(master, textvariable=self.seconds, width=10).grid(row=0, column=3)
self.start_button = tk.Button(master, text="开始", command=self.start_timer)
self.start_button.grid(row=3, column=0, pady=10)
self.pause_button = tk.Button(master, text="暂停", command=self.pause_timer, state=tk.DISABLED)
self.pause_button.grid(row=3, column=2, pady=10)
self.remaining_time = 0
self.timer_running = False
self.time_label = tk.Label(master, text="", font=("Arial", 12))
self.time_label.grid(row=1, column=1, pady=10)
self.update_time_label()
self.countdown_label = tk.Label(master, text="", font=("Arial", 20, "bold"))
self.countdown_label.grid(row=5, column=0, columnspan=4, sticky="S", pady=10)
def update_time_label(self):
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
self.time_label.config(text=current_time, font=("Arial", 12))
self.master.after(1000, self.update_time_label)
def start_timer(self):
if not self.timer_running:
self.remaining_time = int(self.minutes.get()) * 60 + int(self.seconds.get())
self.timer_running = True
self.start_button.config(state=tk.DISABLED)
self.pause_button.config(state=tk.NORMAL)
self.update_timer()
def pause_timer(self):
if self.timer_running:
self.timer_running = False
self.start_button.config(state=tk.NORMAL)
self.pause_button.config(state=tk.DISABLED)
def update_timer(self):
if self.timer_running:
minutes, seconds = divmod(self.remaining_time, 60)
self.minutes.set("{:02d}".format(minutes))
self.seconds.set("{:02d}".format(seconds))
self.countdown_label.config(text=f"{minutes:02d}:{seconds:02d}",
font=("Arial", 16, "bold"))
if self.remaining_time == 0:
self.timer_running = False
self.start_button.config(state=tk.NORMAL)
self.pause_button.config(state=tk.DISABLED)
else:
self.remaining_time -= 1
self.master.after(1000, self.update_timer)
root = tk.Tk()
timer = CountdownTimer(root)
root.mainloop()