我正在用 Python 编写一个小实用程序,它可以对文本进行一些模式匹配。与用户输入的模式匹配的文本会以黄色突出显示。
我正在使用 TkinterText
小部件实现此目的,并在名为 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()
如果您运行此程序,然后突出显示 Text 小部件中的所有文本,您会看到带有黄色背景的文本变得非常难以阅读。
请注意,在上面的代码片段中,我尝试使用以下方法更改突出显示背景颜色:
w.config(highlightbackground="red")
但这没有奏效。