Как сделать так, чтобы в древовидном представлении ttk не отображались лишние пустые столбцы?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать так, чтобы в древовидном представлении ttk не отображались лишние пустые столбцы?

Сообщение Anonymous »

Я создаю приложение с помощью tkinter и сталкиваюсь с некоторыми неприятными проблемами.
Когда я загружаю свои данные в древовидное представление 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»