共计 1990 个字符,预计需要花费 5 分钟才能阅读完成。
第一版

import tkinter as tk | |
from tkinter import simpledialog | |
import time | |
class CountdownApp: | |
def __init__(self, master): | |
self.master = master | |
master.title("倒计时器") | |
master.attributes('-topmost', True) # 窗口置顶 | |
# 设置窗口背景颜色为透明 | |
master.configure(bg='systemTransparent') | |
# 创建标签用于显示倒计时 | |
self.label = tk.Label(master, text="00:00:00", font=("Helvetica", 36), bg='systemTransparent') | |
self.label.pack(pady=20) | |
# 获取用户输入的时间 | |
self.seconds = self.get_seconds_from_user() | |
# 开始倒计时 | |
self.countdown(self.seconds) | |
def get_seconds_from_user(self): | |
# 弹出对话框让用户输入秒数 | |
seconds = simpledialog.askinteger("倒计时设置", "请输入倒计时的总秒数:") | |
return seconds | |
def countdown(self, seconds): | |
# 更新标签显示剩余时间 | |
self.label.config(text=self.format_time(seconds)) | |
if seconds > 0: | |
self.master.after(1000, self.countdown, seconds - 1) | |
else: | |
self.label.config(text="时间到!") | |
def format_time(self, seconds): | |
minutes, seconds = divmod(seconds, 60) | |
hours, minutes = divmod(minutes, 60) | |
return f"{hours:02d}:{minutes:02d}:{seconds:02d}" | |
def main(): | |
root = tk.Tk() | |
app = CountdownApp(root) | |
root.mainloop() | |
if __name__ == '__main__': | |
main() |
报错


import tkinter as tk | |
from tkinter import simpledialog | |
import time | |
class CountdownApp: | |
def __init__(self, master): | |
self.master = master | |
master.title("倒计时器") | |
master.attributes('-topmost', True) # 窗口置顶 | |
# 设置窗口背景颜色为浅灰色 | |
master.configure(bg='white') | |
# 设置窗口为半透明 | |
master.wm_attributes("-alpha", 0.95) | |
# 设置窗口无边框 | |
master.overrideredirect(True) | |
# 创建标签用于显示倒计时 | |
self.label = tk.Label(master, text="00:00:00", font=("Helvetica", 36), bg='white') | |
self.label.pack(pady=20) | |
# 获取用户输入的时间 | |
self.seconds = self.get_seconds_from_user() | |
# 开始倒计时 | |
self.countdown(self.seconds) | |
def get_seconds_from_user(self): | |
# 弹出对话框让用户输入秒数 | |
seconds = simpledialog.askinteger("倒计时设置", "请输入倒计时的总秒数:") | |
return seconds | |
def countdown(self, seconds): | |
# 更新标签显示剩余时间 | |
self.label.config(text=self.format_time(seconds)) | |
if seconds > 0: | |
self.master.after(1000, self.countdown, seconds - 1) | |
else: | |
self.label.config(text="时间到!") | |
def format_time(self, seconds): | |
minutes, seconds = divmod(seconds, 60) | |
hours, minutes = divmod(minutes, 60) | |
return f"{hours:02d}:{minutes:02d}:{seconds:02d}" | |
def main(): | |
root = tk.Tk() | |
app = CountdownApp(root) | |
root.mainloop() | |
if __name__ == '__main__': | |
main() |

效果非常棒
正文完