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

PySimpleGUI ValueError问题:无法将字符串转为浮点数的解决问询

解决PySimpleGUI中百分比计算的ValueError问题

问题根源

你的代码存在两个核心错误:

  • 获取输入值时误用了window["key"],这获取的是元素对象而非用户输入的文本内容,正确方式是使用event, values = window.read()返回的values字典,它存储了每个输入框的当前值。
  • budget被转为字符串类型,后续计算时浮点数和字符串相乘会触发错误,同时百分比计算误用了整数除法//,会丢失精度。

修正后的代码

import PySimpleGUI as sg

layout = [
    [sg.Text("Budget your paycheck")],
    [sg.Text("Amount of money to budget"), sg.VSep(), sg.Input(key="-BUDGET-"), 
     sg.Button("OK", key="-BUDGET1-")],
    [sg.Text("Savings (%)"), sg.VSep(), sg.Input(key="-SAVINGS-"), sg.Button("OK", 
     key="-SAVINGS1-")], 
    [sg.Text("Disposable(%)"), sg.VSep(), sg.Input(key="-DISPOSABLE-"), 
     sg.Button("OK", key="-DISPOSABLE1-")],
    [sg.Text("Budget:"), sg.Text("Amount", key="-BUDGETFINAL-")],
    [sg.Text("Savings:"), sg.Text("Amount", key="-SAVINGSFINAL-")],
    [sg.Text("Disposable:"), sg.Text("Amount", key="-DISPOSABLEFINAL-")]
]

window = sg.Window("Finance Calculator", layout)
# 初始化变量避免未定义报错
budget = 0.0

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break

    if event == "-BUDGET1-":
        try:
            # 从values字典获取输入并转为浮点数
            budget = float(values["-BUDGET-"])
            # 更新显示,保留两位小数更规范
            window["-BUDGETFINAL-"].update(f"{budget:.2f}")
        except ValueError:
            # 处理非数字输入的情况
            window["-BUDGETFINAL-"].update("请输入数字")

    if event == "-SAVINGS1-":
        try:
            savings = float(values["-SAVINGS-"])
            # 用普通除法计算百分比,避免整数除法丢失精度
            savings_p = (savings / 100) * budget
            window["-SAVINGSFINAL-"].update(f"{savings_p:.2f}")
        except ValueError:
            window["-SAVINGSFINAL-"].update("请输入数字")

window.close()

关键修正点说明

  • 正确获取输入值:所有输入内容都通过values["key"]获取,这是PySimpleGUI获取用户输入的标准方式。
  • 类型转换与初始化:将budget初始化为浮点数,获取输入时直接转为浮点数,确保计算时类型统一。
  • 异常处理:添加try-except捕获ValueError,处理用户输入非数字的情况,提升程序健壮性。
  • 精度控制:使用f"{value:.2f}"格式化输出,保留两位小数,符合财务计算的显示习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:09:15