Я пишу небольшую утилиту на Python, которая выполняет сопоставление с шаблоном текста. Текст, соответствующий шаблону, введенному пользователем, выделяется желтым цветом.
Я добиваюсь этого с помощью виджета Tkinter Text
и настраиваю тег на виджете «Текст» с именем "match"
, который дает любому тексту с именем тега "match"
желтый фон.
Это все выглядит хорошо, за исключением случаев, когда я пытаюсь выделить текст с помощью мыши (например, когда требуется скопировать / вставить). Когда я выделяю текст с помощью мыши, любой помеченный текст, у которого уже есть желтый фон, сохраняет свой желтый фон даже после выделения. Это означает, что вы не можете правильно читать текст, когда он выделен мышью, поскольку белый текст (текст выделяется белым при выделении мышью) на желтом фоне обеспечивает плохую контрастность.
Я бы хотел, чтобы при выделении текста в виджете «Текст» с помощью мыши весь текст получал стандартный синий цвет фона / белый текст, который вы обычно получаете на компьютере с Windows при выделение фрагмента текста.
Вот небольшой фрагмент кода, демонстрирующий, что я имею в виду:
from tkinter import *
root = Tk()
w = Text(root)
w.tag_config("match",background="yellow")
w.config(highlightbackground="red")
w.pack()
w.insert(INSERT,"some non-matching text.")
w.insert(INSERT,"some matching text.","match")
root.mainloop()
Если вы запустите это, а затем выделите весь текст в виджете «Текст», вы увидите, что текст с желтым фоном становится очень трудночитаемым.
Обратите внимание, что в приведенном выше фрагменте кода я попытался изменить цвет фона подсветки с помощью:
w.config(highlightbackground="red")
Но это не сработало.