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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:00:59