【发布时间】:2021-09-28 18:15:02
【问题描述】:
您好,我只是在尝试一些代码,我正在尝试更改标签内文本的颜色(例如物理键盘中的 rgb 颜色效果),使用以下代码我确实可以更改颜色,但是我我试图实现的是让文本的每个字母的颜色发生变化,但我不知道该怎么做。
下面是我写的代码:
import tkinter as tk
import time
import random
color_list = ["red","blue","green","cyan1","yellow","purple"]
root = tk.Tk()
root.geometry("800x600")
i=0
txt = "Hello world"
l1 = tk.Label(root, text=txt)
l1.pack(pady=10)
def text():
#global i
global l1
global root
global color_list
global txt
try:
while True:
#for j in range(0,len(txt)):
random_value = random.randint(0,5)
l1.config(fg=f"{color_list[random_value]}")
l1.update()
time.sleep(1)
'''if i == 100:
l1.config(text="Process completed")
time.sleep(5)
root.destroy()'''
print()
except:
print("Program Exited")
root.after(3000, lambda: text())
root.mainloop()
【问题讨论】:
-
你不能用标签做到这一点。对于某个单词,最简单的方法是使用 pil 并绘制文本图片。另一种更努力的方法可能是文本小部件或使用画布。
-
我之前用canvas试过,但是确实不能让我配置文本的前景。不过,我会尝试使用 Pillow,谢谢您的信息!
-
按照 Atlas435 的建议,您可以使用
tkinter.Text制作多色标签。如果你想让它不能被输入,你可以使用Text.config(state="disabled"),并使用标签设置颜色。Text也有比Label更多的格式选项。只是一个建议。 -
如果您想要更多选项,然后创建一个框架(这将是您的整个字母表),然后将这些字母中的每一个单独放在一个框架上,并将其网格在同一行上。然后你可以手动给它们一个颜色
-
@CoolCloud 你能解释一下吗?我不太明白你的意思。