Tkinter Treeview在特定列的最后一行插入值

2024-07-05 10:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个值列表,使用带有for循环的web应用程序处理这些值,每个值都会给出5种不同类型的结果,然后根据我收到的结果将这些值附加到列表中,我希望使用Tkinter Treeview表反映这些结果

我尝试过这个链接答案https://stackoverflow.com/a/54208124/10401287,但每次它都会在表的末尾创建一个新行。但我想在该特定列的最后一行插入值

我得到的是:

success |  Fail | stage1  | stage2  | stage3|
id1
id2
id3
           id4
                    id5
id6
                            id7
 id8                          
                            id9

我想要的是:

success |  Fail | stage1  | stage2  | stage3|
id1         id4     id5      id7
id2                          id9
id3                    
id6
id8

sample data = ['id1','id2','id3','id4','id5','id6','id7','id8','id9']
                            

我尝试用这段代码向特定列插入值列表,但它抛出item not found错误:

self.tree_view.insert('stage2',END, values=('id7','id9'))

Tags: 列表successfailid3id2id1id4stage3
1条回答
网友
1楼 · 发布于 2024-07-05 10:38:33

如果要在特定列中追加数据,可以使用Treeview.set(...)而不是Treeview.insert(...)。但您需要在附加到该列之前创建行

下面是一个示例代码:

import tkinter as tk
from tkinter import ttk
import random

root = tk.Tk()

columns = ("success", "fail", "stage1", "stage2", "stage3")
tree = ttk.Treeview(root, columns=columns, show="headings")
tree.pack()

for col in columns:
    tree.heading(col, text=col)
    tree.column(col, anchor="c", width=100)

data = ['id1','id2','id3','id4','id5','id6','id7','id8','id9']

# dictionary to store the number of items filled in each column
rowcount = {col:0 for col in columns}
treesize = 0
for item in data:
    # use random choice from columns as an example
    col = random.choice(columns)
    rowcount[col] += 1
    if rowcount[col] > treesize:
        # insert a dummy row
        tree.insert("", "end", iid=treesize, value=[])
        treesize += 1
    # append the item in corresponding column
    tree.set(rowcount[col]-1, col, item)

root.mainloop()

相关问题 更多 >