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

Tkinter监听两个IntVar取值实时展示最小值时标签不更新如何解决

问题原因

你定义的Terre_calcul计算逻辑没有和Spinbox绑定的变量关联,Spinbox数值变化时不会触发计算,Label绑定的terreV一直保持IntVar的默认初始值0,所以不会更新。

修复方案

只需要添加2处绑定逻辑即可:

  1. 给con和vol两个IntVar变量添加写入监听,数值变动时自动触发计算函数
  2. 初始化时主动调用一次计算函数,保证初始状态的显示正确

另外可以简化判断逻辑,直接用Python内置的min()函数取两个值的最小值,代码更简洁。

修改后的完整代码

# 注意你原代码漏了tkinter导入,运行前请先补上这行
from tkinter import *

def Terre_calcul(*args) :
    tr1 = con.get()
    tr2 = vol.get()
    # 直接用min函数取最小值,无需写if判断
    terreV.set(min(tr1, tr2))

#################################

#creation of the parent widget
win = Tk()
win.title("Fiche personnage")

#widgets dimensions
win.geometry("800x1029+0+0")
win.resizable(width= False, height= False)

##################################

#Constitution 
con = IntVar()
conE = Spinbox(win, from_= 1, to= 10, width= 1, textvariable= con)
conE.place(x= 180, y= 165)
con.set(conE.get())
# 绑定变量变化监听
con.trace('w', Terre_calcul)

#Volonté
vol = IntVar()
volE = Spinbox(win, from_= 1, to= 10, width= 1, textvariable= vol)
volE.place(x= 168, y= 196)
vol.set(volE.get())
# 绑定变量变化监听
vol.trace('w', Terre_calcul)

#Score
terreV = IntVar()
terre = Label(win, textvariable= terreV)
terre.tkraise(aboveThis= None)
terre.place(x= 266, y= 212)

# 初始化主动调用一次计算,保证初始显示正确
Terre_calcul()

win.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:39:02