如何更改标签中某些单词的颜色?

时间:2018-07-22 06:19:59

标签: python python-2.7 tkinter

我想更改标签内某些单词的颜色。我看到了一个类似的示例,该示例在tag_configuretag_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()

2 个答案:

答案 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)

不能在标签上使用两种以上的颜色(前景色和背景色)。如果需要多种颜色,则必须使用小型画布或文本小部件。