Python如何提取Firebase返回的JSON值生成列表填充QTableWidget?
解决方案
1. 核心错误修正
你不需要用json.dumps把字典转成字符串再拆分,usuario.val()本身就是可直接操作的Python字典对象,直接提取值即可。为了保证取值顺序完全符合你的预期,不要直接用dict.values()(依赖Python版本和返回数据的key顺序),最好显式指定取值的key顺序,避免顺序错乱。
2. 完整实现代码
import json from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem # 首先显式定义你需要的取值顺序,和你要求的列表下标一一对应 KEY_ORDER = ["data", "destino", "nome", "origem", "taxa", "valordestino", "valororigem"] usuarios = db.child("operacoes").get() # 假设你已经初始化了QTableWidget对象,名字为table_widget # 先设置表格的行数和列数 table_widget.setColumnCount(len(KEY_ORDER)) # 可选设置表头,不需要可以删掉 table_widget.setHorizontalHeaderLabels(KEY_ORDER) row = 0 for usuario in usuarios.each(): data_dict = usuario.val() # 按指定顺序提取值生成列表 teste = [data_dict[key] for key in KEY_ORDER] # 插入QTableWidget的逻辑 table_widget.insertRow(row) for col, value in enumerate(teste): # 所有值转字符串显示,你可以按需格式化数值类型 table_widget.setItem(row, col, QTableWidgetItem(str(value))) row += 1
3. 补充说明
- 如果你确认运行环境是Python3.7+,且Firebase返回的key顺序和你要求的顺序完全一致,也可以直接用
teste = list(data_dict.values())获取值列表,但显式指定KEY_ORDER的兼容性和稳定性更高 - 数值类型的字段(taxa、valordestino等)可以按需做精度格式化再插入表格,比如保留2位小数避免显示过长的浮点尾数
内容的提问来源于stack exchange,提问作者user2348911
相关产品推荐
相关产品推荐

