Tkinter点击Enter按钮获取Spinbox值始终为初始值1的问题
问题根因
你的代码逻辑存在赋值时机错误:a = var.get()这行是在GUI初始化阶段执行的,此时用户还未对Spinbox做任何调整,a拿到的就是Spinbox默认初始值1。a是普通整型变量,不会随着Spinbox绑定的var变化自动更新,因此点击按钮时永远打印初始化阶段存下的固定值1。
修复方案
- 删除初始化阶段提前赋值的
a = var.get()语句 - 在按钮绑定的
print_test回调函数内部,实时调用var.get()获取Spinbox的当前值,保证每次点击都能拿到最新调整后的结果 - 额外注意:Tkinter控件不要把创建和
.pack()/.grid()/.place()布局操作链式写在同一行,否则布局方法会返回None,导致你后续无法正常调用控件实例的方法,属于高频踩坑点。
修正后的可运行代码:
import tkinter as tk gui = tk.Tk() gui.geometry("300x390") gui.title("Test") var = tk.IntVar() spin_box = tk.Spinbox( gui, textvariable=var, from_=1, to=10 ) spin_box.pack() def print_test(): # 触发按钮时实时读取最新值 print(var.get()) enter = tk.Button(gui, text="Enter", command=print_test) enter.pack(pady=15) gui.mainloop()
内容的提问来源于stack exchange,提问作者olenka
相关产品推荐
相关产品推荐

