【问题标题】:Adjust height of a row in Tkinter Treeview depending on wraped strings根据包装的字符串调整 Tkinter Treeview 中行的高度
【发布时间】:2018-07-13 20:22:21
【问题描述】:

我正在为我的 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()

【问题讨论】:

  • 当里面有一个很长的字符串时,您希望它看起来像什么?你能提供一张图片吗?
  • 你的例子远非最小。
  • 我也对答案感兴趣。这就是编辑问题和代码的原因。
  • 我尝试为每个带有heigth=50 的元素使用image,但该行不适应这个。

标签: python python-3.x tkinter treeview


【解决方案1】:

所有行的高度可以用这个代码修改。

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

很高兴知道 Treeview 中的每一行是否可以有自己的样式来定义单独的行高(取决于换行符)。

【讨论】:

  • 我有一个具有 3 个不同树视图的项目,我尝试使用:style = ttk.Style(root) style.configure('Treeview', rowheight=45) 但随后它更改了所有树视图的行高,而不是我想要的树视图。我试图更改root,但它没有用,你能帮我解决这个问题吗?如何仅为特定树视图更改行高
【解决方案2】:

回答 Aleksandar Beat 的问题:

为了改变特定Treeview的样式,你必须在ttk小部件名称之前定义一个不同的标识符:

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

但是,如果你这样做,你必须指定 ttk 小部件的style 选项。

示例用法:

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

这也适用于任何 ttk 小部件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多