如何将字符偏移量转换为文本小部件的列行号位置?
How to convert character offset to Text widget's column line number position?
我有一个带有一些文本的文本小部件。在字符 424 到 478 的文本中,我想使用 tag_add().
更改其颜色
问题是tag_add() 需要以“6.15”格式定位,即第六行第十五字符。但是我不知道第 424 个字符之前有多少新行,也不知道计算确切列的剩余部分是多少。有没有一种方法可以将绝对字节偏移量转换为 line/column 索引?
如果您使用 insert()
添加文本,您可以指定在插入过程中使用的标签:
textw.tag_configure('red', background='red')
textw.insert(END, 'Some sample text ', (), 'with a bit of red', 'red', ' in the middle.')
结果:
此外,根据您的文本配置方式,您可以使用:
textw.tag_add('red', 1.424, 1.478)
文本小部件支持带索引的有限表达式语法。除此之外,您还可以从索引中添加和减去字符。例如,您可以使用 "1.0 + 100 chars"
(或 "1.0+100c"
)表示 "line one, character zero, plus 100 characters"。
官方 python 文档强调对此进行记录,选择在此处推荐您参考官方 tcl/tk 文档:http://tcl.tk/man/tcl8.5/TkCmd/text.htm#M16
这也记录在 effbot 网站上:http://effbot.org/tkinterbook/text.htm(参见 "Expressions" 部分)
我有一个带有一些文本的文本小部件。在字符 424 到 478 的文本中,我想使用 tag_add().
更改其颜色问题是tag_add() 需要以“6.15”格式定位,即第六行第十五字符。但是我不知道第 424 个字符之前有多少新行,也不知道计算确切列的剩余部分是多少。有没有一种方法可以将绝对字节偏移量转换为 line/column 索引?
如果您使用 insert()
添加文本,您可以指定在插入过程中使用的标签:
textw.tag_configure('red', background='red')
textw.insert(END, 'Some sample text ', (), 'with a bit of red', 'red', ' in the middle.')
结果:
此外,根据您的文本配置方式,您可以使用:
textw.tag_add('red', 1.424, 1.478)
文本小部件支持带索引的有限表达式语法。除此之外,您还可以从索引中添加和减去字符。例如,您可以使用 "1.0 + 100 chars"
(或 "1.0+100c"
)表示 "line one, character zero, plus 100 characters"。
官方 python 文档强调对此进行记录,选择在此处推荐您参考官方 tcl/tk 文档:http://tcl.tk/man/tcl8.5/TkCmd/text.htm#M16
这也记录在 effbot 网站上:http://effbot.org/tkinterbook/text.htm(参见 "Expressions" 部分)