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

如何在PySimpleGUI中使用元组作为文本框键并实现运算?

解决PySimpleGUI中使用元组作为元素键并进行运算的问题

嘿,我看到你遇到的问题了——你想用元组作为输入输出框的键,这本身没问题,但你错误地把元组当成变量直接赋值了,这在Python里肯定行不通。咱们一步步来修正:

核心问题分析

你写的(out1,x) = (in1,x)/2是在试图给元组(out1,x)赋值,但这不是更新PySimpleGUI元素内容的正确方式。PySimpleGUI的元素需要通过window[key]来访问,然后调用update()方法来修改显示内容。另外,输入框sg.InputText返回的值是字符串类型,你得先把它转换成数值(比如float或int)才能做运算。

修改后的完整代码

import PySimpleGUI as sg

in1 = 1
out1 = 2
rows = 1  # number of rows in table

layout = [
    [sg.Text('Input1', size=(5, 1)), sg.InputText(size=(7, 1), key=(in1, 0))],
    [sg.Text('Output1', size=(5, 1)), sg.Text(size=(7,1), background_color='#e6d4a8', relief='sunken', border_width=1, key=(out1, 0))],
    # more rows...
    [sg.Text('')],
    [sg.Button('Start', size=(5, 1)), sg.Exit('Exit', size=(5, 1))]
]

window = sg.Window('Test Window', layout)

while True:
    event, values = window.read()
    
    if event == sg.WIN_CLOSED or event == 'Exit':
        break
    
    # 点击Start按钮时执行运算
    if event == 'Start':
        for x in range(rows):
            # 获取输入值并转换为数值类型(这里用float兼容小数)
            try:
                input_value = float(values[(in1, x)])
                # 计算结果
                result = input_value / 2
                # 更新输出文本框的内容
                window[(out1, x)].update(f"{result:.2f}")  # 格式化显示两位小数
            except ValueError:
                # 处理输入非数字的情况
                window[(out1, x)].update("无效输入")

window.close()

关键修改点

  • 获取输入值:通过values[(in1, x)]获取输入框的内容,因为values字典的键就是你定义的元组。
  • 类型转换:把字符串转成float(或int)才能进行数学运算,否则会报错。
  • 更新元素内容:使用window[(out1, x)].update(内容)来修改文本框的显示值,这是PySimpleGUI更新元素的标准方式。
  • 异常处理:加了try-except块,防止用户输入非数字内容导致程序崩溃,提升健壮性。

如果后续要扩展更多行,只需要调整rows的值,然后在循环里自动处理每一行的输入输出,逻辑是通用的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:28:39