我正在使用 tkinter 开发文本标记工具。它主要是围绕使用 Text 小部件上的各种标记方法构建的。然而,让我发疯的事情是,如果有重叠的标签,我无法在标签文本周围获得正确的边框。
考虑以下一段文本,使用方括号显示的两个不同标签进行标记:
[my [example]]
当我使用 时.tag_configure("outer", borderwidth=1, relief="solid")
,我想在“我的示例”周围设置一个边框,但是,我得到两个边框:如果为“示例”设置了背景颜色,则在“我的”周围和“示例”周围。如果不涉及背景颜色,它可以按我的意愿工作。但我真的需要改变背景颜色的能力!
最小的工作示例:
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master):
super().__init__(master)
self.grid(row=0, column=0, sticky=tk.N+tk.S+tk.W+tk.S)
self.text = tk.Text(self)
self.text.insert("1.0", "my example")
self.text.tag_add("outer", "1.0", "end-1c") # "my example"
self.text.tag_configure("outer", borderwidth=1, relief="solid")
self.text.tag_add("inner", "1.3", "end-1c") # "example"
self.text.tag_configure("inner", background="white") # white to see the problem better
self.text.grid(row=0, column=0)
if __name__ == "__main__":
root = tk.Tk()
app = Application(root)
app.mainloop()
问题:有没有办法(可能是hacky)围绕这些“外部”标签获得单一边框?
我想要的是:
我得到什么: