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

Tkinter开发意大利问答游戏add1、add2按钮失效问题求助

问题原因

你遇到的两个问题本质是3个代码错误导致的:

  • 按钮回调绑定错误:command参数传入sottrai1(tot1)时会直接执行函数,不是点击时才触发,页面加载时自动执行了一次加法,导致初始显示500而非0
  • 函数参数作用域问题:加减函数里的tot1是局部参数,修改后不会同步到全局的金额变量,后续点击也不会累加数值
  • 变量定义冗余混乱:同时定义了全局字符串tot1s和类属性self.tot1s的StringVar,实际没有用到响应式变量,逻辑冲突

修正方案

只需要修改lacopertina方法内的3部分代码即可:

  1. 删掉无用的StringVar定义
    原代码里的self.tot1s=tk.StringVar()和self.tot2s=tk.StringVar()没有用到,直接删除即可。

  2. 修改加减函数,直接操作全局金额变量

# 去掉参数,直接操作全局tot1
def sottrai1():
    global tot1
    tot1 -= 500
    myLabel41.config(text=tot1)

def aggiungi1():
    global tot1
    tot1 += 500
    myLabel41.config(text=tot1)
  1. 修正按钮回调绑定,用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:36:02