Tkinter开发意大利问答游戏add1、add2按钮失效问题求助
问题原因
你遇到的两个问题本质是3个代码错误导致的:
- 按钮回调绑定错误:
command参数传入sottrai1(tot1)时会直接执行函数,不是点击时才触发,页面加载时自动执行了一次加法,导致初始显示500而非0 - 函数参数作用域问题:加减函数里的
tot1是局部参数,修改后不会同步到全局的金额变量,后续点击也不会累加数值 - 变量定义冗余混乱:同时定义了全局字符串
tot1s和类属性self.tot1s的StringVar,实际没有用到响应式变量,逻辑冲突
修正方案
只需要修改lacopertina方法内的3部分代码即可:
删掉无用的StringVar定义
原代码里的self.tot1s=tk.StringVar()和self.tot2s=tk.StringVar()没有用到,直接删除即可。修改加减函数,直接操作全局金额变量
# 去掉参数,直接操作全局tot1 def sottrai1(): global tot1 tot1 -= 500 myLabel41.config(text=tot1) def aggiungi1(): global tot1 tot1 += 500 myLabel41.config(text=tot1)
- 修正按钮回调绑定,用lambda包裹避免直接执行
add1 = tk.Button(canvas2, text="-", command=lambda: sottrai1(), font=("Arial", 10)) add1.place(x=20, y=140) add2 = tk.Button(canvas2, text="+", command=lambda: aggiungi1(), font=("Arial", 10))
修改后初始值会正确显示0,点击加减按钮可以正常修改金额,全局tot1的值也会同步更新,满足后续游戏逻辑调用的需求。
内容的提问来源于stack exchange,提问作者James Garofalo
相关产品推荐
相关产品推荐

