2017-05-12 2 views
-1

私はpython tkで3dボックスを作っていますが、ボックスはコーナー画面とウィンドウのフルスクリーンで描画され、ループして複数を作成します。pythonのボックスの座標Tkinter(3d)

なぜこのようなことが起こっているのか分かりませんが、1つのボックスだけが必要です。

キャンバス上の別の場所にボックスを作成するのはなぜですか?ここで

tkinter window when run:

コードです:

from tkinter import * 

window = Tk() 
window.title("Game.py") 
window.geometry("800x500") 

canvas = Canvas(window, width = window.winfo_width(), height = window.winfo_height()) 
canvas.configure(background='#5d90e2') 
canvas.pack() 

verts = ((-1,-1,-1), (1,-1,-1), (1,1,-1), (-1,1,-1), (-1,-1,1), (1,-1,1),(1,1,1), (-1,1,1)) 

edges = (0,1), (1,2), (2,3), (3,0), (4,5), (5,6), (6,7), (7,4), (0,4),(1,5), (2,6), (3,7) 


def fit_canvas(): 

    canvas.config(width= window.winfo_width(), height=window.winfo_height()) 

def main(): 

    fit_canvas() 

    hw = window.winfo_width()/2 
    hh = window.winfo_height()/2 

    for edge in edges: 

     points = [] 

     a = verts[edge[0]] 
     b = verts[edge[1]] 

     for x,y,z in (a,b): 

      z += 5 
      f = int(200/z) 

      x,y = x*f, y*f 

      points += [(hw+x, hh+y)] 

     print(points[0] , points[1]) 

     canvas.create_line(points[0][0],points[0][1],points[1][0],points[1}[1]) 


loop_no = 0 

while True: 
    loop_no += 1 

    main() 
    canvas.update() 
+0

このコードには構文エラーがあり、そのまま実行されることはありません。また、キャンバスの幅と高さは1ピクセルなので、表示されません。 –

答えて

0

(...プログラムがクラッシュするまで)あなたが無限ループにmain()を呼び出すので、あなたはボックスの無限の数を得ようとしています。

問題を解決するには、ループを削除します。

関連する問題