Я пишу простое приложение, которое имеет функцию поиска с использованием tkinter. Я успешно реализовал функцию поиска, но обнаружил, что, когда она находит два поля поиска, которые находятся рядом друг с другом (например, между ними нет пробелов), и я добавляю тег подсветки для обоих полей, создается впечатление, что tkinter объединяет два tag_add записей в одном диапазоне. Вот пример кода, который демонстрирует это:
import tkinter as tk
from tkinter import *
root = tk.Tk()
T = tk.Text(root, height=10, width=50)
T.pack()
string = """This is some example text
This is some more example text
In this line exampleexample occurs twice
This is the last example line"""
T.insert(tk.END, string)
find_length = IntVar()
pos = T.search("example", "1.0", stopindex=END, count=find_length, nocase=1)
while pos:
print ("pos = ", pos)
print("length =", find_length.get())
end = "%s+%sc" % (pos, find_length.get())
print ("end =", end, "\n")
T.tag_add('highlight', pos, end)
T.tag_configure('highlight', foreground ='red')
pos = T.search("example", end, stopindex=END, count=find_length, nocase=1)
print (T.tag_ranges('highlight'))
tk.mainloop()
Вывод этого примера кода выглядит следующим образом:
pos = 1.13
length = 7
end = 1.13+7c
pos = 2.18
length = 7
end = 2.18+7c
pos = 3.13
length = 7
end = 3.13+7c
pos = 3.20
length = 7
end = 3.20+7c
pos = 4.17
length = 7
end = 4.17+7c
(<textindex object: '1.13'>, <textindex object: '1.20'>, <textindex object: '2.18'>, <textindex object: '2.25'>, <textindex object: '3.13'>, <textindex object: '3.27'>, <textindex object: '4.17'>, <textindex object: '4.24'>)
А вот ссылка на результаты: Пример тега Tkinter
Как видите, я сделал tag_add для каждого результата поиска. Но результат для «exampleexample» в третьей строке был объединен в один диапазон 3.13 - 3.27.
Я предполагаю, что это работает так, как задумано. Но подумал, что я спрошу сообщество, может быть, я что-то упускаю из виду или делаю неправильно.
Заранее спасибо.