我尝试在 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)
谁能告诉我为什么?
答案 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)])