如何在Tkinter文本小部件中的下一个插入行中添加标签

时间:2018-12-11 12:03:40

标签: python tkinter

我正在尝试将文本插入到Tkinter文本小部件中。每个插入的行都将包含people的用户名,如果该用户是我们研究组的一部分,我想用红色文字标记该行。

我已经在其创建时直接配置了标签,就像这样

self.txt.tag_configure("ingroup", foreground="#FF0000")

然后,当我开始插入文本时,我有一个条件子句,用于评估当前用户是否属于该组:

group = ["member1", "member2", "member3", "member4"]
for i,u in enumerate(user):
    if u in group:
        self.txt.tag_add("ingroup", "{}.0".format(i), "{}.{}".format(i, tk.END))
    self.txt.insert(tk.END, u)

这可以按预期工作,只是将标记添加到用户上方的行,我认为这是因为“文本”小部件中的第一个行索引为1。但是,仅向行索引添加一个行将导致标记根本没有应用。

group = ["member1", "member2", "member3", "member4"]
for i,u in enumerate(user):
    if u in group:
        self.txt.tag_add("ingroup", "{}.0".format(i+1), "{}.{}".format(i+1, tk.END))
    self.txt.insert(tk.END, u)

为什么会这样?我可以安全地使用i-1,然后将标记应用到我感兴趣的行上方的第二行。我无法向i添加任何内容,因此不应用标记。 tag_add方法不能接受尚未创建循环的i的值吗?

我注意到我只是显式地插入正确的行号,然后按预期工作。

0 个答案:

没有答案