您好,我只是在尝试一些代码,我正在尝试更改标签内文本的颜色(如物理键盘中的 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()
正如评论中提到的,使用Text
是一种方法,但我觉得使用Frame
,是与您所做的更相似的方法。基本思想是创建一个类似于整个句子/单词的主框架,然后将每个字母创建为单独的标签,并更改其颜色。你不应该使用while
因为它会干扰mainloop
导致应用程序冻结。
import tkinter as tk
import random
root = tk.Tk()
color_list = ["red","blue","green","cyan1","yellow","purple"]
text = 'Hello World'
def change():
for wid in alpha.winfo_children(): # Each letter
rand = random.randint(0,len(color_list)-1) # Get a random color
wid.configure(fg=color_list[rand]) # Change the letter to that random color
root.after(50,change) # Repeat every 50 millisecond
alpha = tk.Frame(root)
alpha.pack()
count = 0
for idx,letter in enumerate(text):
tk.Label(alpha,text=letter,fg=color_list[count],font=(0,21)).grid(row=0,column=idx)
if count < len(color_list)-1:
count += 1
else:
count = 0
change()
root.mainloop()
大部分代码都是不言自明的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)