我想更改标签内某些单词的颜色。我看到了一个类似的示例,该示例在tag_configure
和tag_add
的文本小部件中使用单词的颜色更改,但是没有用,颜色不显示。不确定以下代码中的错误是什么?
#!/usr/intel/bin/python2.7
import Tkinter
from Tkinter import *
import ttk
class MyApp:
def __init__(self, parent):
self.top_left_label = Label(parent, text="Top Left")
self.top_left_label.grid(row=0, column=0, padx=2, pady=2, sticky=N+S+W)
self.top_right_label = Label(parent, text="Top Right")
self.top_right_label.grid(row=0, column=1, padx=2, pady=2, sticky=N+S+E)
mytext = Text(root)
mytext.insert(INSERT, "Enter the Apple %d Configuration Name"% 2)
mytext.tag_configure("highlight", background="red")
mytext.tag_add("highlight", "11.0", "16.0")
self.ad_l0 = Label(root, text=mytext.get("1.0", END))
self.ad_l0.grid(row=2, column=0, sticky='W')
self.ad_l0.rowconfigure(2, weight=1)
root = Tk()
root.title("Test UI")
myapp = MyApp(root)
root.mainloop()
答案 0 :(得分:0)
首先,您应该直接grid()
,而不要在新标签中插入文本,因为这将重置标签中的所有标签(mytext.get("1.0", END)
将仅复制文本,而不是标签)。< / p>
然后,用于选择的索引将查找第11至16行。请参考此doc,它说明了可以使用的不同选择器。
class MyApp:
def __init__(self, parent):
self.top_left_label = Label(parent, text="Top Left")
self.top_left_label.grid(row=0, column=0, padx=2, pady=2, sticky=N+S+W)
self.top_right_label = Label(parent, text="Top Right")
self.top_right_label.grid(row=0, column=1, padx=2, pady=2, sticky=N+S+E)
self.mytext = Text(root)
self.mytext.insert(INSERT, "Enter the Apple %d Configuration Name"% 2)
self.mytext.tag_add("highlight", "1.0", "2.0") # colors the whole 1st line
#self.mytext.tag_add("highlight", "1.10", "1.15") # colors only 'Apple'
self.mytext.tag_configure("highlight", background="red")
self.mytext.grid(row=2, column=0, sticky='W')
答案 1 :(得分:0)
不能在标签上使用两种以上的颜色(前景色和背景色)。如果需要多种颜色,则必须使用小型画布或文本小部件。