Is there a way to change height of tkinter Treeview heading?

对着背影说爱祢 提交于 2021-01-27 22:57:06

问题


I got a problem with changing the height of the Treeview.heading. I have found some answers about the dimensions of Treeview.column, but when I access Treeview.heading in the documentation, there is not a single word about changing the height of the heading dynamically when the text doesn't fit (and wrapping it) or even just hard-coding height of the heading in pixels. I don't have to split the text to two rows, but when I just keep it that long the whole table (as it has many entries) takes up the whole screen. I want to keep it smaller, therefore I need to split longer entries.

Here is how it looks like:


回答1:


I can't find any documentation to verify this but it looks like the height of the heading is determined by the heading in the first column.

Reproducing the problem

col_list = ('Name', 'Three\nLine\nHeader', 'Two\nline')
tree = Treeview(parent, columns=col_list[1:])
ix = -1
for col in col_list:
    ix += 1
    tree.heading(f'#{ix}', text=col)

The fix

col_list = ('Name\n\n', 'Three\nLine\nHeader', 'Two\nline')

or, if you want to make it look prettier

col_list = ('\nName\n', 'Three\nLine\nHeader', 'Two\nline')

The only problem is I haven't figured out how to centre the heading on a two line header

Edit

The newlines work if it is the top level window but not if it is a dialog. Another way of doing this is to set the style. I've got no idea why this works.

style = ttk.Style()
style.configure('Treeview.Heading', foreground='black')


来源:https://stackoverflow.com/questions/59970241/is-there-a-way-to-change-height-of-tkinter-treeview-heading

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!