Tkinter Treeview,只显示列表中的第一个值

时间:2017-07-17 16:42:17

标签: python tkinter

这是我的插入代码:

import tkinter as tk
from tkinter import ttk

class SummaryTree(ttk.Treeview):
    def __init__(self, parent, kwargs):
        ttk.Treeview.__init__(self, parent, columns=2, selectmode=tk.NONE, show='tree', takefocus=False)

        self.column('#1', anchor=tk.W)
        self.tag_configure('evenrow', background='#cecece')

        for index, item in enumerate(kwargs.items()):
            if index % 2 == 0:
                self.insert('', tk.END, text=item[0], values=item[1], tags=('evenrow',))
            else:
                self.insert('', tk.END, text=item[0], values=item[1])

if __name__ == '__main__':
    root = tk.Tk()
    kwargs = {
        'Soda': [
            'Sprite',
            'Mountain Dew',
            'Coke'
        ],
        'Numbers': [
            5,
            6,
            7
        ]
    }
    SummaryTree(root, kwargs).pack()
    root.mainloop()

由于某种原因,此代码仅在列表中插入第一个值。我不太确定我在这里缺少什么。

1 个答案:

答案 0 :(得分:2)

根据ttk.Treeview文档,选项为:

  

列标识符列表,指定列数   和他们的名字

因此,如果您希望Treeview有3列名为123,则应写入:

ttk.Treeview.__init__(self, parent, columns=[1, 2, 3], ...)