2017-10-21 6 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 (시작, 끝) 반환 번호를 무작위로 색상을 생성 할 수 있지만, 입력 받아 채우기 = 같은 문자열 만 ""16 진수 = " #RGB " fill = (1,1,0)과 같은 숫자 값을 입력하면 작동하지 않습니다. 어떻게 임의의 문자열 값을 채우기로 생성 할 수 있습니까?

+2

목록에 여러 색상의 문자열을 찔러 넣은 다음 목록에서 임의로 하나씩 선택할 수는 없습니까? – Carcigenicate

답변

1

단순히 색상의 알려진 목록에서 random.sample()을 사용하여 감사드립니다. 그리고 파이썬 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

대신에 임의의 색상을 생성하십시오. 형식 :

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()