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
相关产品推荐
相关产品推荐

