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

客户端服务器程序:如何从JSON提取数据展示在Tkinter GUI?

问题排查与解决方案

1. 先验证JSON文件合法性

手动检查Export.json的语法是否符合标准JSON规范:

  • 确保所有键和字符串用双引号包裹(不能用单引号)
  • 检查是否有遗漏的逗号、括号不匹配问题
  • 中文键名或值是否正常显示无乱码

示例标准JSON结构:

{
  "CPU总温度": 45.2,
  "CPU负载": 18.7,
  "核心温度": [43.0, 44.1, 42.8, 45.0]
}

2. 检查JSON读取代码

确保客户端读取JSON时的逻辑正确,避免编码或键名错误:

import json

# 正确读取方式(指定UTF-8编码避免中文乱码)
try:
    with open('Export.json', 'r', encoding='utf-8') as f:
        sys_data = json.load(f)
    
    # 提取数据前先打印验证结构
    print("读取到的JSON数据:", sys_data)
    
    # 按JSON实际键名提取(注意大小写、拼写完全匹配)
    cpu_total_temp = sys_data["CPU总温度"]
    cpu_load = sys_data["CPU负载"]
    core_temps = sys_data["核心温度"]
except FileNotFoundError:
    print("Export.json文件不存在")
except KeyError as e:
    print(f"JSON中缺少指定键:{e}")
except json.JSONDecodeError:
    print("JSON格式错误,无法解析")

3. 确认服务器端JSON生成逻辑

服务器必须用json.dumps()将字典转为标准JSON字符串发送,禁止直接用str()转换:

import json
# 假设已通过OHM获取到数据存入字典
cpu_data = {
    "CPU总温度": total_temp,
    "CPU负载": cpu_load,
    "核心温度": core_temp_list
}
# 转为带中文支持的JSON字符串
json_str = json.dumps(cpu_data, ensure_ascii=False)
# 编码后发送给客户端
client_socket.send(json_str.encode('utf-8'))

如果用str(cpu_data)发送,客户端收到的会是带单引号的非标准格式,直接写入JSON后无法解析。

4. 修复客户端数据接收与写入逻辑

若服务器返回的数据较大,需循环接收避免截断;写入时确保直接写入标准JSON字符串:

# 循环接收完整数据
recv_buffer = b''
while True:
    chunk = client_socket.recv(1024)
    if not chunk:
        break
    recv_buffer += chunk
# 解码为字符串
json_str = recv_buffer.decode('utf-8')

# 写入JSON文件(直接写入字符串或转字典后写入均可)
with open('Export.json', 'w', encoding='utf-8') as f:
    # 方式1:直接写入字符串
    f.write(json_str)
    # 方式2:转字典后格式化写入(更安全)
    # data = json.loads(json_str)
    # json.dump(data, f, ensure_ascii=False, indent=4)

5. Tkinter展示前的验证

在将数据传入Tkinter组件前,先通过打印确认提取结果,排除GUI渲染干扰:

# 提取数据后先打印
print(f"CPU总温度:{cpu_total_temp}℃,负载:{cpu_load}%")
print(f"各核心温度:{core_temps}")

# 再更新GUI组件
temp_label.config(text=f"CPU总温度:{cpu_total_temp}℃")
load_label.config(text=f"CPU负载:{cpu_load}%")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:12:01