Коригирайте височината на ред в 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 widget:

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