使用类实现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
相关产品推荐
相关产品推荐

