如何将字符偏移量转换为文本窗口小部件的列行号位置?

时间:2015-03-26 14:40:30

标签: python tkinter

我有一个带有一些文字的文本小部件。在字符424到478的文本中,我想使用tag_add()更改其颜色。

问题是tag_add()需要以“6.15”格式定位,这意味着第六行第十五个字符。但是我不知道第424个字符前面有多少个新行,也不知道计算精确列的余数是多少。有没有一种方法可以从绝对字节偏移量转换为行/列索引?

2 个答案:

答案 0 :(得分:2)

文本小部件支持带索引的有限表达式语法。除此之外,您还可以在索引中添加和减去字符。例如,您可以使用"1.0 + 100 chars"(或"1.0+100c")来表示“第一行,字符零,加上100个字符”。

官方python文档记录了这一点,选择在这里向您推荐官方tcl / tk文档:http://tcl.tk/man/tcl8.5/TkCmd/text.htm#M16

这也记录在这里的effbot网站上:http://effbot.org/tkinterbook/text.htm(参见“表达式”部分)

答案 1 :(得分:0)

如果您使用insert()添加文本,则可以指定在插入期间使用的标记:

textw.tag_configure('red', background='red')

textw.insert(END, 'Some sample text ', (), 'with a bit of red', 'red', ' in the middle.')

结果:

enter image description here

此外,根据文本的配置方式,您可以使用:

textw.tag_add('red', 1.424, 1.478)