2017-06-01 4 views
0

Wenn ich den folgenden Code:einen Diamanten mit tkinter Erstellen

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

Es zeigt nur die obere Hälfte des Diamanten:

enter image description here

Ich möchte die untere Hälfte erstellen, wie Gut. Wie würde ich das tun?

Antwort

1

Nun, durch y Flip das Dreieck den Kopf zu negieren:

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 

Dies wird natürlich über dem oberen Ende der Leinwand platzieren Sie Ihre Dreieck, so dass beim nächsten müssen Sie es nach unten verschieben, bis er die Mitte erreicht, die jetzt die doppelte Distanz zur Mitte hin (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 

Fügen Sie diese auf der Unterseite Ihres Code und Sie werden Ihre Diamanten haben.

+0

Vielen Dank !!!!! – Satsuki

0

Ich mag, wie Sie es getan haben, aber ich denke, es wäre einfacher, eine ASCII-Karte von dem, was Sie wollen, zu machen, dann konvertieren Sie es in tkinter. Mit dieser Methode können Sie die Größe leicht vergrößern.

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