2017-02-13 8 views
1

Ich mache ein Konkordanz-Werkzeug und möchte das Ergebnis mit Farben hervorheben. Im folgenden Code funktioniert es nur für die erste Zeile. Das Tag wird unterbrochen, wenn eine neue Zeile vorhanden ist. Wenn ich beispielsweise in der folgenden Zeichenfolge nach dem Wort "python" suche, hebt das Tag nur die erste Zeile hervor. Es funktioniert nicht für die zweite und dritte Zeile. Bitte hilf mir.Wie fügt man eine neue Zeile in tkinter Text hinzu?

Antwort

0

Jeder Index, den Sie zum Hinzufügen von Hervorhebungen verwenden, beginnt mit "1.", sodass immer nur der erste Satz hervorgehoben wird. Wenn die Zeile beispielsweise 36 Zeichen lang ist, wird ein Index von "1.100" genau wie "1.36" behandelt.

Tkinter kann neue Indizes berechnen, indem er zu einem vorhandenen Index hinzufügt, also statt "1.52" (für eine Zeile, die 36 Zeichen lang ist) "1.0 + 52chars" wollen. Zum Beispiel:

def concord(self, event): 
    ... 
    for word_found in word_concord: 
     start = self.string_text.index("1.0+%d chars" % word_found.start()) 
     end = self.string_text.index("1.0+%d chars" % word_found.end()) 
     self.string_text.tag_add('color', start, end) 
    ... 
+0

Wow, vielen Dank für Ihre Hilfe, Bryan Oakley. Das funktioniert perfekt. –

Verwandte Themen