Tkinter将标签添加到文本(python)

时间:2014-11-27 15:02:55

标签: python tkinter

我希望文本编辑器中的所有print都是紫色的。当我对其进行编码时,它会在我的代码中查找print的每次出现,并尝试向其添加标记。不幸的是,它给了我一个错误,unicode字符串不适用它?

def convertToPyTags(self, blah=None):
    # Run every time a key is pressed, I know that works
    indexes = [] # This works
    textdata = self.texteditor.get("1.0",END) # This works
    print textdata
    print list(textdata), "L" + str(len(textdata)) # This works
    for i in len(textdata): 
        if (textdata[i:(i+7)] == " print "): # This is where it gives an error
            indexes.insert(len(indexes), i)
    print indexes

""" OUTPUT """

[u'p', u'r', u'i', u'n', u't', u' ', u'"', u'H', u'e', u'l', u'l', u'o', u' ', u'w', u'o', u'r', u'l', u'd', u'!', u'"', u'\n'] L21
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1486, in __call__
return self.func(*args)
File "script", line 145, in keyPress
self.convertToPyTags()
File "script", line 136, in convertToPyTags
for i in len(textdata):
TypeError: 'int' object is not iterable

我不知道这意味着什么 - 显然整数是不可迭代的?

再次,paste bin

1 个答案:

答案 0 :(得分:2)

执行此操作时:

for i in len(textdata):

... for循环期待一个项目列表("可迭代")。但是,你给它一个数字,这就是错误说" int不可迭代的原因"。如果要迭代textdata,请执行for i in textdata

您的另一个选择是使用range(),它将返回一个范围内的数字列表。因此,如果您想使用数字进行循环,可以执行for i in range(len(textdata))