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

PySimpleGUI如何将函数返回值传入窗口文本字符串?

问题分析与修复方案

你的代码存在三个核心问题:

  • 定义了main_request_short函数但从未调用,导致response变量完全未赋值,触发"未定义"错误
  • sum_entries是整数类型,直接用+和字符串拼接会触发类型不匹配错误
  • 把函数定义放在按钮事件判断块内,每次点击按钮都会重复定义函数,完全没必要

修复后的代码

import requests
import math
import PySimpleGUI as sg

# 把工具函数移到事件循环外,只定义一次
def main_request_short(api_url):
    r = requests.get(api_url)
    return r.json()

def get_entries(response):
    return math.ceil(response['meta']['count'])

# 窗口定义与事件循环(假设你已有这部分代码)
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    if event == '-CHECK-':
        baseurl_short = 'https://api.nfz.gov.pl/app-umw-api/agreements?page=1&limit=25&format=json&api-version=1.2&sort=provider-code:ASC'
        if method == ['Service Type']:
            api_url_short = ''.join([baseurl_short, '&serviceType=', type_input, '&year=', year_input, '&branch=', region_input])
        else:
            api_url_short = ''.join([baseurl_short, '&productCode=', code_input, '&year=', year_input, '&branch=', region_input])
        
        # 调用函数获取API响应(这步是你之前完全漏掉的)
        response = main_request_short(api_url_short)
        sum_entries = get_entries(response)
        # 用f-string自动转换整数为字符串,避免拼接错误
        window['-OUTPUT-'].update(f'Downloading {sum_entries} records')

关键修复点说明

  1. 补全API调用步骤:新增response = main_request_short(api_url_short),通过调用函数获取API返回的JSON数据,给response变量赋值
  2. 修复字符串拼接错误:使用f-string语法自动将整数sum_entries转换为字符串,避免类型不匹配问题
  3. 优化函数定义位置:把两个工具函数移到事件循环外,只定义一次,避免重复定义的冗余操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:20:22