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

如何拆分PySimpleGUI中sg.Input组件获取的字符串?附相关代码问题梳理

修复PySimpleGUI输入内容对称差检测的问题

我帮你梳理下代码里的问题,然后给你一个能正常工作的版本:

原代码的核心问题

  • 错误获取输入值:你写的folha1 = '1'.split()是对字符串'1'进行拆分,而不是读取输入框里用户输入的内容,应该用values['1']来获取对应key的输入文本
  • 类方法调用问题:comparador类里的main方法没有定义为静态方法,直接调用会报错
  • 冗余导入:导入了from ast import Import和重复的tkinter.Tk,这些都没用到,完全可以删掉
  • 结果展示不友好:直接把集合对称差的列表转成文本显示,可读性很差

修正后的代码

import PySimpleGUI as sg

def main():
    layout = [
        [sg.Text("folha 1", justification='left'), sg.Input(key='1')],
        [sg.Text("folha 2", justification='left'), sg.Input(key='2')],
        [sg.Push(), sg.Button("Detetar", key='detetar')]
    ]
    window = sg.Window("Main Window", layout)
    
    while True:
        event, values = window.read()
        if event == sg.WIN_CLOSED:
            break
        if event == "detetar":
            # 获取输入框内容并按空格拆分(如果是其他分隔符可修改split的参数,比如split(','))
            folha1 = values['1'].split()
            folha2 = values['2'].split()
            # 计算两个列表的对称差
            diff = list(set(folha1).symmetric_difference(set(folha2)))
            
            # 更友好的结果展示布局
            result_layout = [
                [sg.Text("差异内容:")],
                [sg.Listbox(diff, size=(40, 10), key='result')],
                [sg.Button("关闭", key='close')]
            ]
            resposta = sg.Window("差异检测结果", result_layout, resizable=True)
            
            while True:
                res_event, res_values = resposta.read()
                if res_event in (sg.WIN_CLOSED, 'close'):
                    resposta.close()
                    break
    window.close()

if __name__ == "__main__":
    main()

关键修改说明

  1. 简化代码结构:把原来的类改成普通函数main,避免类方法调用的问题,代码更简洁直观
  2. 正确读取输入:用values['1']和values['2']获取用户输入的文本,再用split()按空格拆分(如果你的输入是用逗号等其他分隔符,修改split的参数即可)
  3. 优化结果展示:用sg.Listbox来展示差异内容,比直接显示列表文本可读性强很多
  4. 完善窗口逻辑:第二个窗口关闭后会回到主窗口,不会直接退出程序,同时确保所有窗口都能正常关闭

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:12:44