我想在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',
并不是这样的:'百年战争',就像它应该的那样,并且不用说标签没有分配给单词。
有没有人知道是否有正确的方法可以做到这一点,还是只是你无法为那么多单词分配标签?
编辑:澄清了一点答案 0 :(得分:2)
似乎python函数的参数数量限制为255(参见here) - 显然Guido认为错误地(明确地)调用具有更多参数的函数(我想我同意他的观点;)。解决此限制的最简单方法是使用" splat"或"拆包"操作
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()