Функция не выделяет шаблон в текстовом виджете tkinter
Я написал небольшую функцию, чтобы выделить шаблон поиска в текстовом виджете и назначил его кнопке "Найти". Но оказалось, что он не выделяет нужный шаблон в текстовом виджете и просто застревает.
def find():
xml.tag_delete("search")
xml.tag_configure("search", background="green")
while True:
index = xml.search(fi.get(), "1.0", END)
if index == "":
break
start = index + "+%dc" % len(fi.get())
xml.tag_add("search", index, "%s + %dc" % (index,len(fi.get())))
Кто может сказать мне, что я делаю не так? xml
текстовый виджет, fi
является виджетом записи, поэтому пользователь обычно вводит шаблон fi
виджет. Любая помощь будет оценена. Спасибо
1 ответ
Каждый раз, когда вы выполняете поиск, вы выполняете поиск от "1.0" до конца документа. Если то, что вы ищете, находится в документе хотя бы один раз, этот цикл while никогда не закончится, потому что index
никогда не будет пустой строкой.
Решение состоит в том, чтобы сделать start="1.0"
перед циклом, а затем измените свой поиск, чтобы начать с start
так как вы обновляете эту переменную в конце вашего цикла.
start = "1.0"
while True:
index = xml.search(fi.get(), start, END)