【问题标题】:Is there a way to change height of tkinter Treeview heading?有没有办法改变 tkinter Treeview 标题的高度?
【发布时间】:2020-05-15 03:17:17
【问题描述】:

我在更改Treeview.heading 的高度时遇到了问题。我找到了一些关于Treeview.column 尺寸的答案,但是当我在文档中访问Treeview.heading 时,没有一个字关于在文本不适合时动态更改标题的高度(并包装它)甚至只是以像素为单位硬编码标题的高度。 我不必将文本分成两行,但是当我保持它那么长时,整个表格(因为它有很多条目)占据了整个屏幕。我想让它更小,因此我需要拆分更长的条目。

这是它的样子:

【问题讨论】:

  • 是的,我也是这么想的——如果你可以调整宽度,为什么没有高度。但似乎缺少那部分。或者我只是非常盲目。编辑:“大小”是要在其中设置标题的列的参考名称(这些名称可以在 Treeview.columns 中设置;您也可以使用数字),text 是应该出现在它。所以不是这样。
  • 查看这篇文章:ttk.Treeview - Can't change row height。这看起来是一个好的开始。
  • 这允许改变行的高度,但不能改变标题,不幸的是。
  • 我挖掘的越多,我发现我可以在页眉中编辑,但非可编辑样式布局的页眉有一个高度字段......在这种情况下可能是不可能的。我的猜测是高度是硬编码的,没有我们可以改变的变量。

标签: python-3.x tkinter treeview


【解决方案1】:

我找不到任何文档来验证这一点,但看起来标题的高度是由第一列中的标题决定的。

重现问题

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)

修复

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

或者,如果你想让它看起来更漂亮

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

唯一的问题是我还没有弄清楚如何将标题放在两行标题上

编辑

如果它是顶级窗口,则换行符有效,但如果它是对话框,则换行符无效。另一种方法是设置样式。我不知道为什么会这样。

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

【讨论】:

  • 这可行(顶级版本),但需要澄清一下:您没有命名第一列(通过 col_list[1:])。您可以通过使用所有列来作弊,然后在 for 循环之外添加一行:tree.heading('#0', text='\n\n')
猜你喜欢
  • 2022-01-16
  • 2011-01-09
  • 2021-09-28
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多