编写代码在对象上生成随机颜色

时间:2021-07-26 21:57:39

标签: python tkinter colors

我尝试在 tkinter 上使用 pyhton 编写代码。

def random_color():
hashtag = str('#')
eka_väri = random.choice(range(0,255))
toka_väri = random.choice(range(0, 256))
kolmas_väri = random.choice(range(0,256))
red = hex(eka_väri)
green = hex(toka_väri)
blue = hex(kolmas_väri)
gbl= [red[2:], green[2:], blue[2:]]
yhdistäjä = ''
x = yhdistäjä.join(gbl)
return (hashtag + x)

该代码将 RGB 数字转换为十六进制数字。它的工作原理是这样的。

canvas.create_polygon(10, 10, 10, 60, 50, 35, fill=random_color)

当我这样说时,它不再起作用了。

def random_triangle():
p1 = random.randrange(w)
p2 = random.randrange(h)
p3 = random.randrange(w)
p4 = random.randrange(h)
p5 = random.randrange(w)
p6 = random.randrange(h)
Canvas.create_polygon(p1, p2, p3, p4, p5, p6, fill=random_color, outline=random_color)

谁能告诉我为什么?

1 个答案:

答案 0 :(得分:1)

填充和轮廓参数必须是函数。这将起作用:

import random
from tkinter import *

def random_color():
    hashtag = str('#')
    eka_väri = random.choice(range(0,255))
    toka_väri = random.choice(range(0, 256))
    kolmas_väri = random.choice(range(0,256))
    red = hex(eka_väri)
    green = hex(toka_väri)
    blue = hex(kolmas_väri)
    gbl= [red[2:], green[2:], blue[2:]]
    yhdistäjä = ''
    x = yhdistäjä.join(gbl)
    return (hashtag + x)

def random_triangle():
    w = 500
    h = 500
    p1 = random.randrange(w)
    p2 = random.randrange(h)
    p3 = random.randrange(w)
    p4 = random.randrange(h)
    p5 = random.randrange(w)
    p6 = random.randrange(h)
    Canvas.create_polygon(p1, p2, p3, p4, p5, p6, fill=random_color(), outline=random_color())
root = Tk()
Canvas = Canvas()
Canvas.pack()
random_triangle()
root.mainloop()

当返回的十六进制代码格式不正确时,您的 random_color() 函数在某些情况下也会出错。您可以使用如下十六进制代码,而不是使用 rgb:

def random_color():
    return "#" + ''.join([random.choice('0123456789ABCDEF') for j in range(6)])
相关问题