我正在使用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()
答案 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()