2017-08-04 72 views
0

我试图创建一个帆布与100个完全随机的矩形出现,但我得到的是一个空白的画布,一个错误:“!帆布”无效的命令名称“帆布!”

无效的命令名称

我该如何解决这个问题?

from tkinter import * 
import random 
tk = Tk() 
canvas = Canvas(tk, width=400, height=400) 
canvas.pack() 
tk.mainloop() 

def rndm_rect(width, height): 
    x1 = (random.randrange(width)) 
    y1 = (random.randrange(height)) 
    x2 = x1 + (random.randrange(width)) 
    y2 = y1 + (random.randrange(width)) 
    canvas.create_rectangle(x1, y1, x2, y2) 

rndm_rect(400, 400) 


for x in range(0, 100): 
    rndm_rect(400, 400) 
+0

我也建议您更新标题的实际问题 –

回答

2

tk.mainloop()是用来启动事件循环的命令,因此你正在生成的窗口中,您已经声明为矩形位置的变量之前。

tk.mainloop()在脚本的末尾,它运行良好,见下图:

from tkinter import * 
import random 
tk = Tk() 
canvas = Canvas(tk, width=400, height=400) 
canvas.pack() 

def rndm_rect(width, height): 
    x1 = (random.randrange(width)) 
    y1 = (random.randrange(height)) 
    x2 = x1 + (random.randrange(width)) 
    y2 = y1 + (random.randrange(width)) 
    canvas.create_rectangle(x1, y1, x2, y2) 

rndm_rect(400, 400) 


for x in range(0, 100): 
    rndm_rect(400, 400) 

tk.mainloop() 
+0

_“tk.mainloop()是用于命令生成tKinter主窗口“_ - 这是一个错误的陈述。它不创建或生成任何窗口,它只是启动事件循环。 –

+0

可能我建议使用编辑按钮........ @BryanOakley –