Отрегулируйте высоту строки в Tkinter Treeview в зависимости от обернутых строк

Я делал древовидную структуру для своей программы tkinter, и когда я вставляю в нее данные, в некоторых строках слишком много символов, и некоторые из них невидимы.

Есть ли способ установить автоматический перевод строки для высоты строки? Я не хочу добавлять горизонтальную полосу прокрутки, чтобы решить эту проблему. Это означает, что когда ширина строк больше, чем столбцы с новой строкой, они должны быть вставлены (автоматически). В этом случае высота строки должна регулироваться (автоматически), чтобы в этом случае отображалось более одной строки.

картинка

from tkinter import *
import tkinter.ttk as ttk

root = Tk()

frame = Frame(root)
frame.pack()

tree = ttk.Treeview(frame, height=15,
                    columns=('c1', 'c2'),
                    show="headings")
tree.column('c1', width=100, anchor='center')
tree.column('c2', width=200, anchor='center')
tree.heading('c1', text='text1')
tree.heading('c2', text='text2')
tree.pack()

tree.insert('', 1, values=['edew', 'dewd'])
tree.insert('', 2, values=['abcd'*10, 'wxyz'*10])

root.resizable(width=False, height=False)
root.mainloop()

person RobbieZhao    schedule 03.02.2018    source источник
comment
Как именно вы хотите, чтобы это выглядело, когда внутри очень длинная строка? Не могли бы вы также предоставить изображение для этого?   -  person Nae    schedule 03.02.2018
comment
Ваш пример далек от минимального.   -  person buhtz    schedule 10.02.2018
comment
Меня тоже интересует ответ. Поэтому отредактируйте вопрос и код.   -  person buhtz    schedule 10.02.2018
comment
Я пытался использовать image для каждого элемента с heigth=50, но строка не приспосабливается к этому.   -  person buhtz    schedule 10.02.2018


Ответы (2)


С помощью этого кода можно изменить высоту всей строки.

root = Tk()
style = ttk.Style(root)
style.configure('Treeview', rowheight=45)

Было бы очень приятно знать, может ли каждая строка в Treeview иметь свой собственный стиль для определения отдельной высоты строки (в зависимости от символов новой строки).

person buhtz    schedule 10.02.2018
comment
У меня есть проект с 3 разными древовидными представлениями, и я пытался использовать: style = ttk.Style(root) style.configure('Treeview', rowheight=45) Но затем он меняет высоту строки для всех древовидных представлений, а не для древовидного представления, которое я хотел. Я пытался изменить root, но это не сработало, не могли бы вы помочь мне с этим? Как я могу изменить высоту строки только для определенного дерева - person Aleksandar Beat; 04.07.2018

В ответ на вопрос Александра Бита:

Чтобы изменить стиль определенного Treeview, вы должны определить другой идентификатор перед именем виджета ttk:

Style().configure('AnythingYouWantHere.Treeview', rowheight=45)
# The '.Treeview' can not be changed

Однако, если вы делаете это таким образом, вы должны указать опцию style виджета ttk.

Пример использования:

root = Tk()
Style().configure('MyStyle1.Treeview', rowheight=45) 
styledTreeView = Treeview(root, style='MyStyle1.Treeview')
normalTreeView = Treeview(root) # Style will not automatically apply

Это касается и любых виджетов ttk.

person ProblemsLoop    schedule 07.09.2019