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

使用类实现Python Tkinter倒计时器遇功能异常求助

问题排查与解决

你的问题根源在于错误地给StringVar的set方法直接赋值,而不是调用这个方法来设置变量值。在Tkinter中,StringVar的set()是一个方法,需要通过函数调用的方式传入参数,而非直接赋值覆盖方法本身。

错误代码的核心问题:

  • 初始化时:self.hour.set = ("00") —— 此处把set方法覆盖成了字符串"00",导致后续无法调用set()方法更新值
  • 重置方法中:self.hour.set = ("00") —— 重复相同错误,此时self.hour.set已不是方法,赋值操作完全无效

修正后的完整代码:

from tkinter import *
import time

class Stopwatch():
    def __init__(self):
        self.root = Tk()
        self.root.title("Stop Watch")
        self.root.geometry("600x200")
        
        # 声明StringVar变量
        self.hour = StringVar()
        
        # 正确调用set()方法设置默认值
        self.hour.set("00")
        
        self.hourEntry = Entry(self.root, width=3, font=("Arial", 18, ""), textvariable=self.hour)
        self.hourEntry.place(x=80, y=20)

        self.bt3 = Button(self.root, text="Reset", command=self.reset, font=("Times", 12, "bold"), bg="#DE1738", bd=5)
        self.bt3.place(x=320, y=100)

        self.root.mainloop()    
      
    def reset(self):
        # 正确调用set()方法重置值
        self.hour.set("00")
     
a = Stopwatch()

关键修正说明:

将两处self.hour.set = ("00")全部改为self.hour.set("00"),通过调用方法更新StringVar的值,这样输入框能正确绑定并显示变量内容,重置按钮也能正常触发值的更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:05:43