Я пытаюсь использовать объект TTK Treeview для отображения различных данных, для которых требуются разные имена столбцов / столбцов, по какой-то причине при циклическом просмотре списка заголовков столбцов, которые я создал, я не могу получить больше, чем первый и последний заголовки независимо от того, из чисел, хотя будет работать 2.
Я попытался добавить секцию ожидания, так как это было для создания столбца, чтобы быстро перед заголовком, я попытался полностью удалить список и просто пытаюсь создать 4 заголовка в oop и все тот же результат.
Объект treeview
хранит столбцы в кортежах tree2["columns"]
, которые я распечатываю в конце, чтобы убедиться, что все ссылки на заголовки сохранены, см. Пример кода ниже.
import tkinter as tk
from tkinter import ttk
headings = ["Heading0", "Heading1", "Heading2", "Heading3"]
root = tk.Tk()
root.title("Add headings")
frame1 = tk.Frame(root)
frame1.pack()
tree = ttk.Treeview(frame1)
tree["columns"] = ("C1", "C2")
tree.column("#0", width=500, minwidth=400, stretch=tk.NO)
tree.column("C1", width=200, minwidth=200, stretch=tk.NO)
tree.column("C2", width=200, minwidth=200, stretch=tk.NO)
tree.heading("#0", text="Name", anchor=tk.W)
tree.heading("C1", text="Type", anchor=tk.W)
tree.heading("C2", text="Index", anchor=tk.W)
print(tree["columns"])
t = {}
for i in range(5):
t[i] = tree.insert("", i, text="Example " + str(i), values=("val1", "val2"))
tree.pack(expand=True, fill="both")
def create():
for i, val in enumerate(headings):
if i == 0:
tree2.column("#0", width=200, minwidth=200, stretch=tk.NO)
tree2.heading("#0", text=val, anchor=tk.W)
elif i == 1:
tree2["columns"] = tree2["columns"] + ("C1")
tree2.column("C1", width=800, minwidth=200, stretch=tk.NO)
tree2.heading("C1", text=val[1], anchor=tk.W)
else:
tree2["columns"] = tree2["columns"] + ("C" + str(i),)
tree2.column("C" + str(i), width=800, minwidth=200, stretch=tk.NO)
tree2.heading("C" + str(i), text=val, anchor=tk.W)
print(val)
print(tree2["columns"])
btn1 = tk.Button(frame1, text="Add", command=create)
btn1.pack(side="top")
tree2 = ttk.Treeview(frame1)
tree2.pack(expand=True, fill="both")
root.mainloop()
вот пример:
![Example](https://i.stack.imgur.com/9VLOC.jpg)
Вопрос здесь добавление нескольких столбцов в древовидное представление демонстрирует проблема с получением правильного количества столбцов, но не дает явного ответа ниже о вызове столбцов до заголовков чтобы убедиться, что они отображаются.