2201_75335496 2024-06-23 17:53 采纳率: 76.5%
浏览 0
已结题

pytk Treeview怎么才能正确地把数据放进去,让其看起来像一个表格?

怎么样才可以生成出一个类似表格的内容啊?

text = [{"开机时长": "25小时56分钟36.0秒", "当前时间": "2024年6月23日 17时38分19秒373819微秒", "开机时间": "2024年6月22日 15时41分44秒747376微秒", "登录用户": "Administrator", "硬盘信息": "C:NTFS,D:NTFS,E:NTFS,I:FAT32,M:NTFS", "操作系统": "Windows 10.0.19041", "交换内存(GB)": 3.14, "物理内存(GB)": 11.69, "CPU架构": "64bit-WindowsPE"}]
namelist = []
valuelist = []
for i in range(len(text)):
    valuelist.append([])
    for k,v in text[i].items():
        if not k in namelist:
            namelist.append(k)
        valuelist[i].append(v)

tree = ttk.Treeview(win,columns=["",1],show = "headings")

for i in range(len(namelist)):
    tree.insert("",i,value = namelist[i])
for i in range(len(valuelist)):
    for o in range(len(valuelist[i])):
        print(i,o)
        tree.insert("",i,value = valuelist[i][o]) # 这里怎么改?
  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-23 17:53
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    在使用Python的ttk.Treeview组件创建表格样式的视图时,你需要确保数据结构正确地映射到Treeview的行和列中。下面是一些步骤和代码示例,帮助你实现这个目标:

    1. 初始化Treeview: 首先,你需要初始化Treeview组件,并设置列的标题。在你的代码中,columns=["",1]看起来有误,因为通常列标题是一个字符串列表。

    2. 设置列标题: 你需要将namelist作为列标题添加到Treeview中。

    3. 插入数据: 你需要为每行数据插入正确的值。在你的代码中,tree.insert的使用方式不正确,因为Treeview需要知道插入数据的列索引。

    下面是修正后的代码示例:

    import tkinter as tk
    from tkinter import ttk
    
    # 假设win是你的tkinter窗口实例
    win = tk.Tk()
    
    # 你的数据字典列表
    text = [{"开机时长": "25小时56分钟36.0秒", "当前时间": "2024年6月23日 17时38分19秒373819微秒", ...}]
    
    # 提取列标题
    namelist = list(text[0].keys())  # 假设所有字典都有相同的键
    
    # 创建Treeview
    tree = ttk.Treeview(win, show="headings")
    tree['columns'] = namelist  # 设置列标题
    
    # 为每列设置标题
    for col in namelist:
        tree.column(col, anchor=tk.CENTER)
        tree.heading(col, text=col)
    
    # 插入数据
    for i, item in enumerate(text):
        tree.insert('', 'end', values=tuple(item.values()))  # 使用tuple来插入多列数据
    
    # 打包Treeview到窗口
    tree.pack(expand=True, fill='both')
    
    win.mainloop()
    

    这段代码做了以下几件事情:

    • 使用list(text[0].keys())来获取所有字典的键作为列标题。
    • 使用tree['columns']来设置Treeview的列标题。
    • 使用tree.columntree.heading来设置列的属性和标题。
    • 使用tree.insertvalues参数来为每行插入数据。

    请注意,这段代码假设你的text列表中的所有字典都有相同的键。如果字典的键不同,你可能需要调整代码来处理这种情况。

    如果你需要更多帮助或有其他问题,请随时提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月6日
  • 已采纳回答 6月28日
  • 创建了问题 6月23日

悬赏问题

  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响
  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)