2016-07-18 12 views

Antwort

1

Ich bin mir nicht sicher, was Sie genau machen wollen. Wenn Sie nur die Wörter erhalten möchten, die nicht in Ihrer Liste enthalten sind, verwenden Sie einfach text.get("1.0","end"), um den Inhalt des Text-Widgets zu erhalten. Teilen Sie es dann in Wörter und prüfen Sie, ob jedes Wort in Ihrer Liste enthalten ist.

Edit: Wenn Sie den Index des ersten Buchstaben jedes Wortes in der Liste nicht möchten, können Sie etwas wie das

def indices(word_list): 
    """ return the index of the first letter of each word 
     in the text widget which is not in word_list """ 
    lines = text.get("1.0", "end").split("\n") 
    index = [] 
    for i, line in enumerate(lines): 
     words = line.split() 
     if words: 
      if not words[0] in word_list: 
       index.append("%i.0" % (i+1)) 
      for j in range(1, len(words)): 
       if not words[j] in word_list: 
        index.append("%i.%i" % (i+1, 1 + len(" ".join(words[:j])))) 
    return index 

ich in dieser Funktion angenommen, dass es nie ein weißer Raum am Anfang tun einer Linie.

+1

Der erste Index sollte "1.0" ', nicht" 0.0 "sein. Zeilennummern beginnen mit 1 (eins). –

+0

habe ich nie bemerkt, weil es keinen Fehler verursacht. –

+0

Es wird kein Fehler ausgegeben, aber es ist immer noch falsch. Tkinter verzeiht schlechte Indizes ein wenig, aber Sie sollten immer danach streben, wenn immer möglich, einen geeigneten Index zu geben. –