使用Excel数据更新PySimpleGUI窗口时遇KeyError: 'UPC'问题求助
问题分析与修复方案
错误原因拆解
- 逻辑判断颠倒:当前代码仅当
-UPC-输入框为空时才执行搜索,完全违背需求逻辑,应该是输入UPC后(非空)才触发查询。 - DataFrame列引用错误:
KeyError: 'UPC'说明你的item_infoDataFrame里没有名为UPC的列,或者代码里没正确用列名做匹配条件——当前用item_info[0]取第一列的写法,和错误提示里的UPC列不对应。 - DataFrame遍历方式错误:
for records in records:会遍历DataFrame的列名而非行数据,导致后续取值全错。 - 行数据取值语法错误:
records[item_info['Item Number']]写法混乱,正确的行数据取值应该直接用列名字符串。
修正后的代码
def retrieve_info(): # 去除输入首尾空格,仅当UPC非空时查询 upc_input = values['-UPC-'].strip() if upc_input: # 假设你的DataFrame中存储UPC的列名为'UPC',用列名匹配搜索值 # 如果UPC是第一列(无列名),改用item_info.iloc[:, 0] == upc_input records = item_info[item_info['UPC'] == upc_input] # 遍历匹配到的行数据 for _, record in records.iterrows(): window['-SKU-'].update(record['Item Number']) window['-DESCRIPTION-'].update(record['Item Description']) window['-UOM-'].update(record['UOM']) window['-LOCATION-'].update(record['LOCATION']) # 无匹配结果时清空字段(可选) if records.empty: window['-SKU-'].update('') window['-DESCRIPTION-'].update('') window['-UOM-'].update('') window['-LOCATION-'].update('')
额外注意事项
- 确认
item_infoDataFrame的列名:UPC、Item Number、Item Description、UOM、LOCATION这些列名必须真实存在,且大小写完全一致。 - 如果UPC是DataFrame的第一列(没有列名),把匹配条件改成
item_info.iloc[:, 0] == upc_input。 - 扫描UPC时可能带首尾空格,用
.strip()可以避免因空格导致匹配失败。
内容的提问来源于stack exchange,提问作者mcybulski3
相关产品推荐
相关产品推荐

