如何在Python Tkinter中获取TreeView指定列的最后一项?
解决Tkinter TreeView获取指定列最后一项数值的问题
错误原因分析
你遇到的TypeError: 'int' object is not subscriptable是因为代码中OUT_DC_Level_data_table.item(child)['values'][1]已经是单个数值(比如整数类型),却试图用[-1]对其进行下标访问——整数不支持下标操作,所以报错。
另外你的循环逻辑存在问题:遍历所有子项时反复覆盖变量,最终只能得到最后一个子项的值,但写法完全错误。
正确实现方法
要获取指定列的最后一项,不需要遍历所有子项,直接取最后一个子项的对应列即可:
# 获取所有子项ID的列表 all_children = OUT_DC_Level_data_table.get_children() if all_children: # 确保TreeView不为空 # 取最后一个子项的ID last_child = all_children[-1] # 获取该子项的所有列值 last_item_values = OUT_DC_Level_data_table.item(last_child)['values'] # 假设frozen对应列索引1,chill对应2,dry对应3(根据你的实际列顺序调整) get_latest_value_OUT_DC_level_frozen = int(last_item_values[1]) get_latest_value_OUT_DC_level_chill = int(last_item_values[2]) get_latest_value_OUT_DC_level_dry = int(last_item_values[3]) # 后续计算示例 result = get_latest_value_OUT_DC_level_frozen * 30 print(result) else: print("TreeView中没有数据")
关键说明
get_children()返回TreeView所有子项的ID列表,[-1]直接取最后一个子项item(last_child)['values']返回该子项所有列的数值列表,按列顺序索引(从0开始)- 确保列对应的值是可转为整数的字符串/数值,否则需要额外的异常处理
内容的提问来源于stack exchange,提问作者Dahlia Harahap
相关产品推荐
相关产品推荐

