Tkinter合并日月下拉框选中值生成日期报str不可调用错误如何解决
报错原因
- 核心触发点位于
add()函数的数据库插入逻辑:你已经通过data_value = data()完成了函数调用,拿到的data_value是字符串类型的日期拼接结果,后续又错误地给data_value添加了括号写成data_value(),相当于尝试把字符串对象作为可调用函数执行,直接触发该类型错误。 - 额外隐患:
data()函数内部的局部变量名day、month和全局定义的StringVar类型的day、month重名,会覆盖全局变量的指向,后续其他位置调用全局的这两个变量时会出现异常。
修复方案
- 直接修改
add()函数的插入代码,去掉data_value后的多余括号即可解决报错:
#insert in database def add(): data_value=data() # 去掉data_value后的括号,直接传入字符串结果 db.insert(aaaa.get(), bbbb.get(), data_value)
- 可选优化:修改
data()函数内的局部变量名,避免和全局变量重名,提升代码可维护性:
def data(): day_str = combo_day.get() month_str = combo_month.get() result = day_str + '.' + month_str return result
内容的提问来源于stack exchange,提问作者user17423825
相关产品推荐
相关产品推荐

