Когда я загружаю свои данные в древовидное представление ttk, я вижу, что справа всегда есть дополнительные столбцы. сторона моего дерева, которая пуста. Я понял, что для большего набора данных есть гораздо больше пустых столбцов (фактические данные загружены правильно). Я хочу избавиться от этих дополнительных столбцов или узнать их источник. Ниже я прикрепил пример кода, демонстрирующий проблему.
Я также хотел бы создать функцию выбора столбца, но пока вышеуказанная проблема не будет решена, мне не хочется двигаться дальше. . Есть ли простое решение избавиться от пустых столбцов? возможен ли выбор столбца из коробки? Идея состоит в том, чтобы иметь немного функциональность Excel, но не слишком сложную.
import pandas as pd
import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo
root = tk.Tk()
root.title('Treeview demo')
root.geometry('620x200')
data = {'Name':['Tom', 'nick', 'krish', 'jack', 'mack', 'tack', 'crack', 'lack'],
'Age':[20, 21, 19, 18, 20, 21, 19, 18]}
df = pd.DataFrame(data)
tree = ttk.Treeview(root, columns=df.columns, show='headings')
scrollbar_y = ttk.Scrollbar(root, command=tree.yview)
scrollbar_x = ttk.Scrollbar(root, command=tree.xview,
orient=tk.HORIZONTAL)
tree.config(xscrollcommand=scrollbar_x.set, yscrollcommand=scrollbar_y.set)
scrollbar_y.pack(fill=tk.Y, side=tk.RIGHT)
scrollbar_x.pack(fill=tk.X, side=tk.BOTTOM)
tree.pack(fill="both", expand=True)
df.dropna(axis=1, how='all', inplace=True)
df.columns = [str(x)[:50] for x in df.columns]
df = df.reset_index(drop=True)
print("all cols : ", df.columns)
print(df.columns)
# display the data in the treeview.
df_list = list(df.columns)
df_reset = df.to_numpy().tolist()
print("No of columns ", len(df_list))
tree["columns"] = df.columns
for i in range(len(df_list)):
col = df_list
tree.column(i, anchor='c')
tree.heading(i, text=col)
j = 0
for dt in df_reset:
v = [r for r in dt]
print("v ", v)
tree.insert('', 'end', iid=j, values=v)
j += 1
print("Total rows : ", j)
root.mainloop()

Заранее спасибо за ваши предложения!
Изменить: исправлена опечатка при создании экземпляра древовидного представления в df.columns, как было предложено. В реальном коде я создаю экземпляр пустого дерева, а затем заполняю его содержимым и устанавливаю столбцы, используя
tree["columns"] = df.columns.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ty-columns