如何用不同颜色的tkinter python制作不同的单词?

时间:2018-01-17 12:58:59

标签: python tkinter

我正在使用Tkinter制作用户界面并且稍微使用着色字。 目标是用红色前景第二个单词和黄色前景制作第一个单词,并对下一行单词做同样的操作:

Word_A (前景红色) Word_B (前景黄色)

Word_CCC (前景红色) Word_DDD (前景黄色)

我的真实程序中的每个单词都有不同的长度(在本例中也是如此)。

我的代码:

 class Window(Frame):
    def __init__(self, master=None):
    Frame.__init__(self, master)
    self.master = master


    S = Scrollbar(self.master)
    T = Text(self.master, height=40, width=100)
    S.pack(side=RIGHT, fill=Y)
    T.pack(side=RIGHT, fill=X, expand=True)
    S.config(command=T.yview)
    T.config(yscrollcommand=S.set)


    for w in [('Word_A', 'Word_B'), ('Word_CCC', 'Word_DDD')]:


        T.insert(INSERT, w[0])
        T.insert(END, "  ")

        T.tag_add("start", "1.0", "1.5")
        T.tag_config("start", foreground="red")

        T.insert(END, w[1])
        T.insert(END, "\n")

        T.tag_add("here", "1.5", "10.0")
        T.tag_config("here", foreground="yellow")


top = Tk()
top.geometry('1000x1000')
app = Window(top)

top.mainloop()

1 个答案:

答案 0 :(得分:3)

插入时,您可以直接将标记添加到单词中: text.insert(<index>, <word>, <tag>)

以下是一个例子:

import tkinter as tk

words = [('Word_A', 'Word_B'), ('Word_CCC', 'Word_DDD')]

root = tk.Tk()
text = tk.Text(root)
text.pack()
text.tag_configure('red', foreground='red')
text.tag_configure('yellow', foreground='yellow')

for w1, w2 in words:
    text.insert('end', w1, 'red')
    text.insert('end', ' ')
    text.insert('end', w2, 'yellow')
    text.insert('end', '\n')

root.mainloop()