Я хотел бы вставить следующие строки в древовидное представление и отобразить полную строку, однако при запуске кода строка не отображается полностью в древовидном представлении. Я также хотел бы выбрать строку в древовидном представлении, чтобы вернуть строку, строка в некоторой степени правильная, но не совпадает с первоначально вставленной строкой. Я использую Python 3.6. Ниже приведен код, который я использую, и некоторые примеры результатов, которые я наблюдал. Подскажите, пожалуйста, 2 вещи:
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()
Спасибо, что нашли время помочь начинающему программисту! Я был бы очень признателен за ваш вклад!
Я попытался изменить размер древовидной структуры, но, похоже, это не имеет значения.
Обратите внимание, что оба параметра 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, за ваше объяснение, теперь я понимаю это лучше. Я очень ценю предложенные вами изменения, они ответили на все мои вопросы в этом посте!