Text widgets:是否有yscrollincrement,是否可以查询content geometry?

Text widgets: is there a yscrollincrement and can content geometry be queried?

文本小部件是否具有类似于 canvas 的 yscrollincrement 的任何内容,以便滚动单位可以不是整行,这样当嵌入图像或其他小部件时,滚动将获胜'跳转小部件的高度但正常的行高?

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

谢谢。

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

我现在不记得是 Tk 8.5 还是 8.6 将行为更改为以这种方式工作。我认为是8.6,但我真的不敢发誓。如果您使用的版本与我所说的不符,升级是唯一推荐的修复方法,尤其是对于新代码!

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