2017-10-21 2 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

リストに色の文字列をたくさん貼り付けてリストから1つをランダムに選ぶことはできませんか? – 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

代わりに、あなたのランダムな色を生成してください。フォーマット:

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() 
関連する問題