Python:为Tkinter中的文本分配标记

Python:为Tkinter中的文本分配标记,python,tags,tkinter,Python,Tags,Tkinter,我想向Tkinter中的文本小部件添加文本,其中每个单词都有一个单独的标记。 简短示例: text.insert('end', 'Hello, ', 'TAG1', 'how ', 'TAG2', 'are you.', 'TAG3',) 这将给出输出:“你好,你好吗?” 这很好,但我的问题是,我想用跨越多个段落的文本来完成这项工作。我尝试了一种方法,使用脚本编辑文本文件,使每个单词后面都有一个标记,方法与上面的示例相同 但如果我将文本粘贴到脚本中,则会出现以下错误:

我想向Tkinter中的文本小部件添加文本,其中每个单词都有一个单独的标记。 简短示例:

text.insert('end',
    'Hello, ', 'TAG1',
    'how ', 'TAG2',
    'are you.', 'TAG3',)
这将给出输出:“你好,你好吗?”

这很好,但我的问题是,我想用跨越多个段落的文本来完成这项工作。我尝试了一种方法,使用脚本编辑文本文件,使每个单词后面都有一个标记,方法与上面的示例相同

但如果我将文本粘贴到脚本中,则会出现以下错误:

There's an error in your program:
*** more than 255 arguments(scriptname.py, line 77)
不过,没有回溯

此方法也不会提供所需的输出:

infile = open('filepath').read()
text.insert('end', infile)
使用上述方法,脚本实际上会运行,但文本小部件中的文本如下所示:

'The ', 'TAG1',
'Hundred ', 'TAG2',
'Years', 'TAG3',
'War ', 'TAG4',
而不是像人们想象的那样:“百年战争”,不用说标签并没有分配给单词

有没有人知道有没有正确的方法,或者仅仅是因为你不能给那么多的单词分配标签


编辑:澄清一点

一个python函数的参数数量似乎限制在255个(请参见)——显然Guido认为(显式地)调用一个参数多于255个的函数是错误的(我认为我同意他的观点;)。绕过此限制的最简单方法是使用“splat”或“unpacking”操作符

import Tkinter as tk

words="""this is a really large file, it has a lot of words"""*25

args=['end']
for i,w in enumerate(words.split()):
   args.extend((w+' ','TAG%d'%i))


root=tk.Tk()
text=tk.Text(root)
text.grid(row=0,column=0)
text.insert(*args)
root.mainloop()

你能发布整个错误消息吗?为每个单词添加一个标签是非常不寻常的。你到底想解决什么问题?每个单词真的需要有一个独特的标签吗?嗯,我意识到这可能不是我想要实现的最好的方法,但这是我唯一想到的方法。我想通过单击隐藏/取消隐藏文本中的任何单词。为了只隐藏一个单词而不是整个文本,除了给它们单独的标签,我看不到任何其他解决方案。它应该有助于学习文本中的事实。@Yngve——没问题。我不知道python有255个参数限制。谢谢你今天教了我一些东西。哦,哇,我真的教了别人一些东西。即使不经意间,这对我来说还是第一次,哈哈。