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

CustomTkinter点击按钮后在文本框显示计算结果问题求助

问题解决方案

问题1:函数启动时立即执行,而非点击按钮触发

你给CTkButton的command参数直接调用了test_calculator(),这会导致程序启动时就执行函数。正确做法是用lambda包装带参数的函数调用,避免立即执行:

self.sidebar_button_1 = customtkinter.CTkButton(self.tabview.tab("TEST"), text="Calcul", 
                                                command=lambda: self.test_calculator())

注:你的函数里已经通过self直接访问输入控件,不需要额外传递参数。

问题2:计算结果无法正确显示

核心问题:

  • get("1.0")获取的是字符串,还会包含末尾换行符\n,直接做算术运算会导致拼接而非数值计算
  • END未定义,需用字符串"end"替代,或提前导入tkinter.constants中的END
  • 未将输入字符串转为数值类型,无法执行算术运算

修改后的test_calculator函数:

def test_calculator(self):
    # 获取输入并去除换行/空白字符,转为整数
    try:
        long = int(self.input_text_longueur.get("1.0").strip())
        larg = int(self.input_text_largeur.get("1.0").strip())
        haut = int(self.input_text_hauteur.get("1.0").strip())
    except ValueError:
        self.input_text_dimension.insert("end", "输入必须是有效整数!\n")
        return
    
    # 执行公式计算
    self.calcul = ((larg + haut) * 2 + long)
    # 将结果插入目标文本框
    self.input_text_dimension.insert("end", f"计算结果:{self.calcul}\n")
    print("test")

关键修改总结

  • 用lambda包装按钮回调函数,确保点击时才触发
  • 输入值先通过strip()清理多余字符,再转为数值类型
  • 增加try-except处理非数值输入,避免程序崩溃
  • 用"end"指定文本插入位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:03:23