Я пишу небольшую утилиту в 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")
Но это не сработало.
В то время как то, что вы пишете, технически корректно, оно сделает OP абсолютно нехорошим, если он устанавливает highlightbackground вместо selectbackground (в основном вам нужен этот ответ _plus_ первый абзац моего ;-). –
Вы неверны. Мое решение решает его проблему с настройкой подсветки backbackground или selectbackground или без нее. Думаю, вы проголосовали за меня просто потому, что я вниз, - проголосовал за вас. Разница в том, что мое решение работает на вашем не-решении. –
Я должен согласиться с Брайаном - использование w.tag_raise («sel») - это все, что требовалось для примера, представленного в исходном вопросе. –