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')
关键修复点说明
- 补全API调用步骤:新增
response = main_request_short(api_url_short),通过调用函数获取API返回的JSON数据,给response变量赋值 - 修复字符串拼接错误:使用f-string语法自动将整数
sum_entries转换为字符串,避免类型不匹配问题 - 优化函数定义位置:把两个工具函数移到事件循环外,只定义一次,避免重复定义的冗余操作
内容的提问来源于stack exchange,提问作者Michael Wiz
相关产品推荐
相关产品推荐

