根据列表中的位置更改Tkinter Text小部件中某些单词的颜色

时间:2015-04-07 15:57:14

标签: python python-3.x text colors tkinter

我有一个tkinter文本框,我想根据列表中的位置更改特定单词的颜色。基本上我有列表foo = [1,4,5,8,9],我想改变与列表中的数字对应的单词的颜色。因此,位置1,4,5,8和9中的单词应该改变颜色。我已经看过不同的答案,但它们是根据关键词运作的 - 而不是给定单词的位置。

1 个答案:

答案 0 :(得分:2)

突出显示文本的方法是创建标记,使用您想要的任何属性(前景,背景,字体等)配置标记,然后将该标记应用于文本的区域。剩下的就是计算要突出显示的字符范围的简单数学。

text = tk.Text(...)
text.tag_configure("highlight", background="yellow")
...
# add the tag "highlight" to the characters between index 3.0 and 4.0
text.tag_add("highlight", "3.0", "4.0")

为了帮助突出显示单词,您可以使用带有索引的修饰符"wordstart"和/或"wordend"来获取tcl认为是完整单词的开头和结尾。

# add the tag "highlight" to the word at position 4.5
text.tag_add("highlight", "4.5 wordstart", "4.5 wordend")