首页 > 解决方案 > 文本小部件:是否有 yscrollincrement 并且可以查询内容几何?

问题描述

文本小部件是否有任何类似于画布的 yscrollincrement 的东西,这样滚动单元可以不是整行,这样当嵌入图像或另一个小部件时,滚动不会跳跃小部件的高度,而是正常的行高?

此外,是否可以查询文本小部件内容的几何形状而不是其屏幕尺寸?例如,假设我从数据库中读取数据,然后将其显示在文本小部件中,并希望将小部件的高度设置为要开始的内容高度。也许,这很明显,我只是忽略了它。

谢谢你。

标签: tcltk

解决方案


使用文本小部件(假设您有足够新的 Tk 版本)滚动增量被预先确定为视觉线和视觉页面。这不一定是逻辑行,因为可能会更改字体和换行(这会将逻辑行变成段落)。支持这一点的行高计算既复杂又昂贵,如果一次加载大量数据,将在后台完成。线条几何计算完成后,您可以在拖动滚动条时获得完全平滑的滚动,并且它保持恒定的长度。

我现在不记得是 Tk 8.5 还是 8.6 的行为改变为以这种方式工作。我认为它是 8.6,但我真的不会发誓。如果您使用的版本我所说的似乎不正确,那么升级是唯一推荐的修复方法,尤其是对于新代码!

对于您的其他问题,请查看bboxdlineinfo方法,特别注意索引可能采用的形式。例如,左上角的视觉字符有一个由 给出的边界框$txt bbox @0,0,而视线的相关测量值由 给出$txt dlineinfo @0,0。但是,尝试将文本小部件设置为加载数据的高度可能不是一个好主意。给它一个固定的高度,加载可变高度的数据,然后让小部件处理所有的滚动和窗口,往往会更好。您可以通过该方法提示在视口中包含的位置see(您可能会给它逻辑坐标;使用显示坐标……不太可能有多大用处,因为您已经看到了这些)。


推荐阅读