无效的命令名称“.!canvas”

invalid command name ".!canvas"

我正在尝试创建一个 canvas 并出现 100 个完全随机的矩形,但我得到的是一个空白 canvas 和一个错误:

无效的命令名称“.!canvas”

我该如何解决这个问题?

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)

tk.mainloop() 是用于启动事件循环的命令,因此您在声明矩形位置的变量之前生成 window。

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