在我的程序中的文本小部件中,lmargin1/lmargin2用于根据其大纲级别缩进文本(这些是与tag_config一起使用的选项,例如lmargin1 (distance)用于具有此标记的文本块中的第一行的左边距。默认为0(无左距)
我的问题是我定义了一个高亮文本标签,它改变了背景。因此,如果缩进文本使用此标签,则背景也会在边距处发生变化,例如:
#!/usr/bin/env python
from Tkinter import *
root = Tk()
configtext = Text(root, width=150)
configtext.pack()
configtext.tag_configure('n', lmargin1=45, lmargin2=45)
configtext.tag_configure('nh', lmargin1=45, lmargin2=45, background="yellow", foreground="red")
con1="L'Italia è una Repubblica democratica, fondata sul lavoro. La sovranità appartiene al popolo"
con2=" che la esercita nelle forme e nei limiti della Costituzione. La Repubblica riconosce e garantisce i diritti inviolabili dell'uomo"
con3=" sia come singolo sia nelle formazioni sociali ove si svolge la sua personalità, e richiede l'adempimento dei doveri inderogabili di solidarietà politica, economica e sociale.nn"
configtext.insert(INSERT,con1+con2+con3)
configtext.insert(INSERT,con1,'n')
configtext.insert(INSERT,con2,'nh')
configtext.insert(INSERT,con3,'n')
mainloop()
有没有一种方法可以避免用背景色污染页边距? 这是一个相当老的问题,但是考虑到我今天偶然发现它寻找答案,其他有同样问题的人可能会感激这个更新。
我解决这个问题的方法是将标记配置中的lmargincolor
选项设置为Text
小部件的背景色。这将把lmargin1
/lmargin2
添加的边距涂成该颜色(参见官方手册)。
在我的例子中,它看起来像这样:
text_widget.tag_configure(
tagName="warning",
background="#ff9800",
lmargin1=margin1
lmargin2=margin2,
lmargincolor=text_widget.cget("background")
)
当然,你也可以使用像#FFF
这样的静态颜色。
这对我来说就像一个魅力,产生了这个外观(琥珀色背景文本是所讨论的标签)。