使用python写一个桌面的gui自定义倒计时

请添加图片描述

导入包

import tkinter as tk
import time

初始化

 def __init__(self, master, minutes=25, seconds=0):  # 添加默认倒计时
        self.master = master
        master.title("Countdown Timer")
        master.geometry("350x200")  # 将gui界面调整为适当大小

        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")  # 将gui界面调整为适当大小

        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))  # 优化2: 将日期和时间标签的字体大小调整为适当大小
        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"))  # 优化1: 将倒计时标签的字体大小调整为适当大小
            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()

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值