Tkinter Treeview不提供隐藏字符的指示

时间:2019-10-09 20:14:45

标签: python tkinter treeview

文本为“这是太长的文本”。 如您所见,该视图提供了一个水平扩展选项,但没有迹象表明还有更多字符。

我需要给用户一些提示,指出单元格中还有更多字符。 即显示“ ...”。

enter image description here

这是代码:

from tkinter import ttk
import tkinter as tk

win = tk.Tk()
win.resizable(width=0, height=0)

tree = ttk.Treeview(win, selectmode='browse')
tree.grid(row=0, column=0)

vsb = ttk.Scrollbar(win, orient="horizontal", command=tree.xview)
vsb.grid(row=1, column=0, sticky=tk.W + tk.E + tk.N + tk.S)
tree.configure(xscrollcommand=vsb.set)

vsb = ttk.Scrollbar(win, orient="vertical", command=tree.yview)
vsb.grid(row=0, column=1, sticky=tk.W + tk.E + tk.N + tk.S)
tree.configure(yscrollcommand=vsb.set)

tree["columns"] = ("1", "2")
tree['show'] = 'headings'
tree.column("1", anchor='c')
tree.column("2", width=100, anchor='c')
tree.heading("1", text="Col 1")
tree.heading("2", text="Col 2")
tree.insert("", 'end', text="L4", values=("This text is too long","Short text"))

win.mainloop()

1 个答案:

答案 0 :(得分:3)

更新:

结果证明我们可以将 protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) throws BeansException { super.processProperties(beanFactory, props); propertiesMap = new HashMap<String, String>(); for (Object key : props.keySet()) { String keyStr = key.toString(); String valueStr = resolvePlaceholder(keyStr, props, springSystemPropertiesMode); propertiesMap.put(keyStr, valueStr); } } 绑定到树视图,如这篇文章中所述:how-to-detect-resizing-of-ttk-treeview-column @stovfl在评论中指出。因此,我以更少的开销更新了答案:D。

我创建了一个方法,该方法将检查列宽是否已更改,然后检查是否计算了每一行以查看是否需要在末尾添加'<ButtonRelease-1>'

这是通过...中的ImageFont完成的,出于某种原因,认为Treeview字体和PIL字体之间存在接缝大小差异。经过一些测试之后,看来您在Treeview样式中设置的任何字体大小只需将PIL字体加5,它就可以正确计算。

PIL

结果:

enter image description here

添加新行:

enter image description here

删除行:

enter image description here