2017-10-21 237 views
1
from tkinter import * 
import random 

tk = Tk() 
canvas = Canvas(tk, width=400, height=400) 
canvas.pack() 

for x in range(0, 40): 

    x1 = random.randint(0,400) 
    y1 = random.randint(0,400) 
    x2 = random.randint(0,400) 
    y2 = random.randint(0,400) 
    x3 = random.randint(0,400) 
    y3 = random.randint(0,400) 
    my_triangle = canvas.create_polygon(x1, y1, x2, y2, x3, y3,\ 
        fill =("blue"), outline="red") 

嗨!我正在玩tkinter並生成隨機三角形。問題是: 我想在填寫採用隨機=「」生成隨機顏色Python Tkinter隨機生成顏色?

random.randint(開始,結束)的回報數字,但填補只接受字符串像 填充=「紅色」或十六進制=「 #RGB「 如果我輸入像fill =(1,1,0)這樣的數值計算器,則不起作用。我怎麼能在填充中生成隨機字符串值?

謝謝

+2

難道你不能只是將一大堆顏色串粘在列表中,然後從列表中隨機選擇一個? – Carcigenicate

回答

1

只需使用random.sample()從顏色已知列表。你可以找到經過計算的python tkinter彩色圖表here。然後,您可以隨機兩種填寫輪廓值:

COLORS = ['snow', 'ghost white', 'white smoke', 'gainsboro', 'floral white', 'old lace' ...] 

for x in range(0, 40): 

    x1 = random.randint(0,400) 
    y1 = random.randint(0,400) 
    x2 = random.randint(0,400) 
    y2 = random.randint(0,400) 
    x3 = random.randint(0,400) 
    y3 = random.randint(0,400) 

    my_triangle = canvas.create_polygon(x1, y1, x2, y2, x3, y3,\ 
        fill = (random.sample(COLORS, 1)[0]), 
        outline = random.sample(COLORS, 1)[0]) 

Tk Window Output 1 Tk Window Output 2 Tk Window Output 3

當然,如果要複製完全相同的隨機生成的數字總是種子:

random.seed(444) # WHERE 444 IS ANY INTEGER 
0

替代方法只是生成你的隨機顏色a nd格式化:

from tkinter import * 
import random 

def random_color(): 
    return random.randint(0,0x1000000) 

tk = Tk() 
canvas = Canvas(tk, width=400, height=400) 
canvas.pack() 

for x in range(0, 40): 

    color = '{:06x}'.format(random_color()) 
    x1 = random.randint(0,400) 
    y1 = random.randint(0,400) 
    x2 = random.randint(0,400) 
    y2 = random.randint(0,400) 
    x3 = random.randint(0,400) 
    y3 = random.randint(0,400) 
    my_triangle = canvas.create_polygon(x1, y1, x2, y2, x3, y3,\ 
        fill =('#'+ color), outline="red") 

tk.mainloop()