【问题标题】:Show plus sign icon and specify indent for child items tkinter treeview显示加号图标并为子项 tkinter 树视图指定缩进
【发布时间】:2021-05-21 20:11:57
【问题描述】:

我正在使用 python 3 tkinter 树视图构建带有子项目的项目列表。我的树视图有三个列。很简单,我想在每个有子项目的项目上显示那个小 +/- 图标。由于某种原因,它没有出现。此外,子项直接显示在父项下方。因此,如果没有加号图标和缩进,就不可能分辨出哪些项目在哪个父项下。它看起来像一个列表。我在文档中找不到它指定“打开加号图标”或“设置子项的缩进”

我要做什么:

我得到了什么(它仍然可以让我通过双击“管”行来隐藏/显示每个“管”下的“项目”):

任何帮助将不胜感激。

这里有一些示例代码:

import tkinter as tk
import tkinter.ttk as ttk
import random


sub = tk.Toplevel()
result_frame = tk.Frame(sub)
result_frame.pack()

treeview_widget_frame = tk.Frame(result_frame)
treeview_widget_frame.pack(side = 'top')

columns = ['a','b','c']
tubes = 10

treeview_widget = ttk.Treeview(treeview_widget_frame, height = 20, columns = columns, show = 'headings')

for col in columns:
    treeview_widget.heading(col, text = col.title(), command = lambda c=col: sortby(treeview_widget, c, 0))

for n in range(int(tubes)):
    treeview_widget.insert('', tk.END, text = 'Tube ' + str(n+1), iid = n, values = ('Tube ' + str(n+1), "",""), open = 'True')
    print(n)

for t in range(15):
    r = random.randint(0,9)
    treeview_widget.insert(r, tk.END, values = ['Item ' + str(t), '12345', 'details'])

treeview_widget.pack()
    

sub.mainloop()

【问题讨论】:

  • 所以你的意思是,当你点击加号或减号时,文本必须动态变化?
  • Jut 添加了更多信息以帮助澄清。
  • 您在创建树视图时提供了show = 'headings' 选项,因此您告诉 tkinter 隐藏树部分(默认为 show = 'tree headings',它同时显示列标题和树)
  • 谢谢@j_4321。这行得通。你能指出解释细节的文档吗?

标签: python tkinter treeview icons indentation


【解决方案1】:

正如 tcl/tk documentation 中所解释的,Treeview 小部件有一个 show 选项来选择要显示的小部件的哪些部分。它需要一个字符串:

  • "tree headings"(默认)
  • "tree"
  • "headings"
  • ""

headings 对应于列标题,tree 对应于第 0 列 #0,其中包含用于展开/折叠项目的 + 图标。

既然你用

创建了Treeview
treeview_widget = ttk.Treeview(..., show='headings')

然后您告诉 tkinter 隐藏树部分,这就是您看不到 + 图标的原因。要恢复它们,请使用 show='tree headings' 或不传递选项来创建树,因为这是默认值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多