tcl - 文本小部件:是否有 yscrollincrement 并且可以查询内容几何?
问题描述
文本小部件是否有任何类似于画布的 yscrollincrement 的东西,这样滚动单元可以不是整行,这样当嵌入图像或另一个小部件时,滚动不会跳跃小部件的高度,而是正常的行高?
此外,是否可以查询文本小部件内容的几何形状而不是其屏幕尺寸?例如,假设我从数据库中读取数据,然后将其显示在文本小部件中,并希望将小部件的高度设置为要开始的内容高度。也许,这很明显,我只是忽略了它。
谢谢你。
解决方案
使用文本小部件(假设您有足够新的 Tk 版本)滚动增量被预先确定为视觉线和视觉页面。这不一定是逻辑行,因为可能会更改字体和换行(这会将逻辑行变成段落)。支持这一点的行高计算既复杂又昂贵,如果一次加载大量数据,将在后台完成。线条几何计算完成后,您可以在拖动滚动条时获得完全平滑的滚动,并且它保持恒定的长度。
我现在不记得是 Tk 8.5 还是 8.6 的行为改变为以这种方式工作。我认为它是 8.6,但我真的不会发誓。如果您使用的版本我所说的似乎不正确,那么升级是唯一推荐的修复方法,尤其是对于新代码!
对于您的其他问题,请查看bbox
和dlineinfo
方法,特别注意索引可能采用的形式。例如,左上角的视觉字符有一个由 给出的边界框$txt bbox @0,0
,而视线的相关测量值由 给出$txt dlineinfo @0,0
。但是,尝试将文本小部件设置为加载数据的高度可能不是一个好主意。给它一个固定的高度,加载可变高度的数据,然后让小部件处理所有的滚动和窗口,往往会更好。您可以通过该方法提示在视口中包含的位置see
(您可能会给它逻辑坐标;使用显示坐标……不太可能有多大用处,因为您已经看到了这些)。
推荐阅读
- javascript - JS:XMLHtttpRequest 发送数据不起作用
- python - 使用 matplotlib 将轮廓图旋转 90 度
- c - 返回代码顶部/重置代码
- python - 如何从图像中删除背景
- amazon-web-services - 在 Docker 容器中设置 AWS RDS 持久层
- sql-server - 使用 [text()] 别名在 XML 查询中修剪逗号结尾
- java - 如何替换数据提供者的硬编码值
- javascript - JavaScript if 语句 PHP 调用
- python - 如何从 json 文件中获取嵌套键值
- javascript - Google 图表:无法读取 null 的属性“颜色”