Функция не выделяет шаблон в текстовом виджете 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) 
Другие вопросы по тегам