相关疑难解决方法(0)

Tkinter:Treeview小部件

目前我正在开发一个程序,它有自己的项目文件,里面就像子文件,我想知道如何使用treeview小部件显示项目文件中的所有子文件,Any Ideas?

提前致谢!

python treeview tk-toolkit tkinter

9
推荐指数
1
解决办法
2万
查看次数

在缩小列宽后强制 Tkinter.ttk Treeview 小部件调整大小

背景

Python-2.7.14 x64,Tk-8.5.15(捆绑)

Tk 中的 Treeview 小部件有很多问题是有据可查的,而 Tkinter 作为一个瘦包装器,并没有做太多处理这些问题。一个常见的问题是让 Treeview 在browse模式下与水平滚动条一起正常工作。设置整个Treeview的宽度需要设置每一列的宽度。但是如果有很多列,这会水平拉伸父容器,并且不会激活水平滚动条。

我找到的解决方案是,在设计时,将每一列设置width为所需的大小,并将该值缓存在安全的地方。当您添加,编辑或删除行,你需要步行列和查询其当前宽度值,如果它比你的缓存宽度,设置width回原来的缓存值,并且设置minwidth为当前列宽。最后一列也需要将其stretch属性设置为“True”,因此它可以消耗剩余的任何剩余空间。这将激活水平滚动条并允许它适当地平移 Treeview 的内容,而无需更改整个小部件的宽度。

警告:在某些时候,Tk的内部复位width等于minwidth,但并没有强制重绘的时候了。稍后当您更改小部件时会感到惊讶,例如添加或删除一行,因此每次更改小部件时都必须重复上述操作。如果您捕获所有可能发生重绘的地方,这并不是一个真正的大问题。


问题

更改 Ttk 样式的属性会触发整个应用程序的强制重绘,因此会弹出我上面提到的警告,Treeview 小部件水平扩展,水平滚动条停用。


演练

下面的代码演示了:

# imports
from Tkinter import *
from ttk import *
from tkFont import *

# root
root=Tk()

# font config
ff10=Font(family="Consolas", size=10)
ff10b=Font(family="Consolas", size=10, weight=BOLD)

# style config
s=Style()
s.configure("Foo2.Treeview", font=ff10, padding=1)
s.configure("Foo2.Treeview.Heading", font=ff10b, padding=1)

# init a …
Run Code Online (Sandbox Code Playgroud)

python tkinter

5
推荐指数
1
解决办法
3165
查看次数

标签 统计

python ×2

tkinter ×2

tk-toolkit ×1

treeview ×1