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

无法通过StringVar()/IntVar()获取输入值,仅得到''/0求排查

问题分析与解决:使用StringVar/IntVar获取输入框值为空的问题

核心错误原因

你在创建输入框后立即执行了pn = self.product_name_input.get()和pp = self.product_price_tv.get(),此时用户还未在输入框中输入任何内容,这两个变量存储的是输入框/变量的初始值(空字符串''和0)。后续点击按钮时,lambda传递的是这个提前固定的旧值,而非用户输入后的实时值。

修正方案

提供两种可行的修改方式:

方式一:在回调函数内实时获取值

直接在点击按钮时读取输入框或变量的当前值,无需提前存储:

# 修改add_products_to_db函数,去掉参数,内部实时取值
def add_products_to_db():
    pn = self.product_name_input.get()  # 也可以用self.product_name_tv.get()
    pp = self.product_price_tv.get()
    print(pn, pp)

# 按钮command直接绑定函数,无需lambda传参
self.submit_product_btn = ctk.CTkButton(new_window,text="Submit",command=add_products_to_db)

方式二:在lambda中实时传递当前值

如果需要保留参数传递的写法,在lambda里直接调用获取值的方法,传递实时结果:

# 保持add_products_to_db带参数的写法
def add_products_to_db(pn,pp):
    print(pn,pp)

# lambda内实时获取当前值并传递
self.submit_product_btn = ctk.CTkButton(new_window,text="Submit",command=lambda : add_products_to_db(self.product_name_input.get(), self.product_price_tv.get()))

额外建议

代码中存在一个变量名笔误:第二个输入框对应产品价格,但变量名是self.seller_mobile_input,建议改为self.product_price_input,避免后续维护混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:42:53