You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多框架Tkinter应用中倒计时时钟不更新问题排查

问题解决:Tkinter倒计时时钟不更新及报错修复

报错原因及修复要点

  • Line73:Statement seems to have no effect
    代码里self.show_time只是引用了方法对象,没有执行调用操作,必须改成self.show_time()才能启动倒计时更新逻辑。

  • Line108:Name 'show_time' is not defined
    self.after()中直接写show_time会在全局作用域查找,但show_time是PageOne类的实例方法,必须用self.show_time来正确引用。

  • 额外问题修正:

    1. days == 1的判断语句缩进错误,会触发语法报错,需对齐缩进。
    2. 全局变量myClock未被实际使用,属于冗余代码,直接删除即可。
    3. 按需求每500ms更新一次,需将self.after(1000, ...)改为self.after(500, ...)。

修正后的完整代码

import tkinter as tk
from tkinter import font
import datetime

class PageOne(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        fnt = font.Font(family='Quicksand Medium', size=30)
        
        self.txt = tk.StringVar()
        # 启动倒计时更新
        self.show_time()
        
        lbl = tk.Label(self, textvariable=self.txt, font=fnt, foreground="black", background="#FFFFDD")
        lbl.pack()
        button = tk.Button(self, text="返回起始页",
                           command=lambda: controller.show_frame("StartPage"))
        button.pack()

    def show_time(self):
        endTime = datetime.datetime(2029, 7, 20, 16, 0, 0)
        # 计算剩余时间
        remainder = endTime - datetime.datetime.now()
        # 移除微秒部分
        remainder = remainder - datetime.timedelta(microseconds=remainder.microseconds)

        yrs = remainder.days // 365
        yrsTxt = ' years, '
        if yrs == 1:
            yrsTxt = ' year, '

        days = remainder.days % 365
        daysTxt = ' days,'
        # 修复缩进错误
        if days == 1:
            daysTxt = ' day,'

        timeTxt = str(remainder).split(',')[1]

        # 更新显示文本
        self.txt.set(f"{yrs}{yrsTxt} {days}{daysTxt} {timeTxt}")
        
        # 每500ms调用一次自身,实现持续更新
        self.after(500, self.show_time)

内容的提问来源于stack exchange,提问作者Newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:13:21