2017-06-01 10 views
0

私は、次のコードを実行した場合:Tkinterのダイヤモンドを作成

from tkinter import * 
window = Tk() 
window.geometry("500x500+100+100") 
window.attributes("-topmost", True) 
c = Canvas(window, width=500, height=500) 

d = 0 
while d < 7: 
    a = 7-d 
    while a <7: 
     c.create_rectangle(a * 40, d * 40, a * 40+37, d * 40+37, fill="blue", outline="") 
     a += 1 
    d += 1 

d = 0 
while d < 7: 
    a = 0 
    while a <d: 
     c.create_rectangle(a * 40+240, d * 40, a * 40+240+37, d * 40+37, fill="blue", outline="") 
     a += 1 
    d += 1 

c.pack() 
mainloop() 

それが唯一のダイヤモンドの上半分を示しています。

enter image description here

は私のように下半分を作成したいと思いますがよくどうすればいい?逆さまの三角形を反転yを否定することによって

答えて

1

まあ、:

d = 0 
while d < 7: 
    a = 7-d 
    while a <7: 
     c.create_rectangle(a * 40, -(d * 40), a * 40+37, -(d * 40+37), fill="blue", outline="") 

     a += 1 
    d += 1 


d = 0 
while d < 7: 
    a = 0 
    while a <d: 
     c.create_rectangle(a * 40+240, -(d * 40), a * 40+240+37, -(d * 40+37), fill="blue", outline="") 

     a += 1 
    d += 1 

これはもちろん、キャンバスの最上部の上にあなたの三角形を置き、あなたはそれが真ん中に達するまでそれをダウンシフトする必要があるので、次の、これは今の真ん中に二重の距離(240*2+37)です:

d = 0 
while d < 7: 
    a = 7-d 
    while a <7: 
     c.create_rectangle(a * 40, 240*2+37-(d * 40), a * 40+37, 240*2+37-(d * 40+37), fill="blue", outline="") 

     a += 1 
    d += 1 


d = 0 
while d < 7: 
    a = 0 
    while a <d: 
     c.create_rectangle(a * 40+240, 240*2+37-(d * 40), a * 40+240+37, 240*2+37-(d * 40+37), fill="blue", outline="") 

     a += 1 
    d += 1 

あなたのコードの下にこれを追加し、あなたのダイヤモンドを持っています。

+0

ありがとうございます!!!!! – Satsuki

0

私はあなたのやり方が好きですが、あなたが望むもののASCII 'マップ'を作成してtkinterに変換する方が簡単だと思います。この方法を使用すると、簡単にサイズを拡大できます。

from tkinter import * 
window = Tk() 
window.geometry("500x500+100+100") 
window.attributes("-topmost", True) 
c = Canvas(window, width=500, height=500) 

inputNumber = 11+2 
grid = [" "*int((inputNumber-i)/2)+"X"*i for i in range(1,inputNumber,2)] 
grid += grid[::-1][1:] 
for y, row in enumerate(grid): 
    for x, item in enumerate(row): 
     if item == "X": 
      c.create_rectangle(x * 40, y * 40, x * 40+37, y * 40+37, fill="blue", outline="") 

c.pack() 
mainloop() 
関連する問題