Tkinter TreeView, отображение и выбор строк, вопрос

Я хотел бы вставить следующие строки в древовидное представление и отобразить полную строку, однако при запуске кода строка не отображается полностью в древовидном представлении. Я также хотел бы выбрать строку в древовидном представлении, чтобы вернуть строку, строка в некоторой степени правильная, но не совпадает с первоначально вставленной строкой. Я использую Python 3.6. Ниже приведен код, который я использую, и некоторые примеры результатов, которые я наблюдал. Подскажите, пожалуйста, 2 вещи:

  1. как обеспечить, чтобы вставленная строка отображалась точно так же в древовидном представлении?
  2. Когда я выбираю строку данных и нажимаю Enter, как вернуть ее в исходную вставленную строку?
import tkinter as tk
import tkinter.ttk
selected_from_list = []
def select():
    curItems = tree.selection()
    for x in curItems:
        print(x)
        selected_from_list.append(tree.item(x)['values'])
        print(selected_from_list)
    print(selected_from_list)
    print([str(tree.item(i)['values']) for i in curItems])
    tk.Label(root, text = "\n".join([str(tree.item(i)['values']) for i in curItems])).pack()

root = tk.Tk()
tree = tkinter.ttk.Treeview(root, height=4)

tree['show'] = 'headings'
tree['columns'] = ('File path')
tree.heading("#1", text='Badge Name', anchor='w')
tree.column("#1", stretch = "no")
tree.pack()

tree.insert("", "end", values = "C:/Users/PB/PyProjects/VA_PY_36/Python Excel project/people 1.xlsx")
tree.insert("", "end", values = "C:/Users/PB/PyProjects/VA_PY_36/Python Excel project/people 2.xlsx")
tree.insert("", "end", values = "C:/Users/PB/PyProjects/VA_PY_36/Python Excel project/people 3.xlsx")

tree.bind("<Return>", lambda e: select())

root.mainloop()

Спасибо, что нашли время помочь начинающему программисту! Я был бы очень признателен за ваш вклад!

Я попытался изменить размер древовидной структуры, но, похоже, это не имеет значения.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание, что оба параметра columns и values ожидают кортеж/список, но вы передали им обоим строку. Похоже, что строка будет неявно разделена пробелами базовым интерпретатором TCL, и вы получите то, что показано на опубликованном изображении.

Передайте правильные типы двум параметрам, как показано ниже:

...
tree['columns'] = ('File path',)  # changed to tuple by adding a comma before the ending )
...
tree.column("#1", stretch = "no", width=400) # set larger width to show the content
...
# pass list to values option
tree.insert("", "end", values=["C:/Users/PB/PyProjects/VA_PY_36/Python Excel project/people 1.xlsx"])
tree.insert("", "end", values=["C:/Users/PB/PyProjects/VA_PY_36/Python Excel project/people 2.xlsx"])
tree.insert("", "end", values=["C:/Users/PB/PyProjects/VA_PY_36/Python Excel project/people 3.xlsx"])
...

Результат:

Спасибо, сэмпай acw1668, за ваше объяснение, теперь я понимаю это лучше. Я очень ценю предложенные вами изменения, они ответили на все мои вопросы в этом посте!

Zerahny Chew 28.03.2024 13:54

Другие вопросы по теме