【问题标题】:Tkinter Treeview, only the first value in a list being displayedTkinter Treeview,仅显示列表中的第一个值
【发布时间】:2017-07-17 16:42:17
【问题描述】:

这是我的插入代码:

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()

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

【问题讨论】:

  • 请创建一个minimal reproducible example。您的示例不完整。
  • @BryanOakley 我已经创建了我的代码的最小可验证示例

标签: python tkinter


【解决方案1】:

根据ttk.Treeview 文档,columns 选项是:

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

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

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

【讨论】:

  • 啊,现在我明白了。我只是瞎了眼。谢谢您的帮助。您知道如何使树视图中的 text 项不被聚焦,以使其周围没有虚线吗?
  • 不客气 :) 要删除焦点上的虚线,请尝试编辑 ttk 样式,如下所示:Removing Ttk Notebook Tab Dashed Line
  • 我了解代码,但不幸的是我不知道要使用的布局字符串。我试过Treeview.Cell、Treeview.Column、Treeview.Text,它们都报错,因为它们不存在
  • 我也不确定你应该使用哪一个。也许您可以将其作为一个新问题提出...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多