标签文本中的 RGB 颜色效果,tkinter python

2024-03-29

您好,我只是在尝试一些代码,我正在尝试更改标签内文本的颜色(如物理键盘中的 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(使用前将#替换为@)

标签文本中的 RGB 颜色效果,tkinter python 的相关文章

随机推荐