Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python Tkinter(3d)中长方体的坐标_Tkinter_Tk_Python 3.6 - Fatal编程技术网

python Tkinter(3d)中长方体的坐标

python Tkinter(3d)中长方体的坐标,tkinter,tk,python-3.6,Tkinter,Tk,Python 3.6,我正在用PythonTk制作一个3d框,但是当框在角落屏幕和窗口全屏中绘制时,会循环并创建多个 我不知道为什么会这样,应该只有一个盒子 为什么要在画布上的不同位置创建框 代码如下: from tkinter import * window = Tk() window.title("Game.py") window.geometry("800x500") canvas = Canvas(window, width = window.winfo_width(), height = window

我正在用PythonTk制作一个3d框,但是当框在角落屏幕和窗口全屏中绘制时,会循环并创建多个

我不知道为什么会这样,应该只有一个盒子

为什么要在画布上的不同位置创建框

代码如下:

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()
在无限循环中调用
main()
,将得到无限多的框(直到程序崩溃…)


要解决此问题,请删除循环。

此代码有语法错误,因此无法按原样运行。此外,画布的宽度和高度为1像素,因此不可见。