Tkinter window 未打开

Tkinter window not opening

我在 Python 3 中尝试使用 tkinter 创建一个简单的移动块,在我导入时间之前一切正常。 window 现在打不开了。我试过删除导入,但没有帮助。这是我的代码:

from tkinter import *
import time

canvas_height = 400
canvas_width = 600
canvas_colour = "grey50"
moveBoolean = "True"

def move():
    global moveBoolean
    while moveBoolean == "True":
        time.sleep(0.005)
        canvas.move(square, 90, 90)
        time.sleep(0.005)
        canvas.move(square, 180, 180)
        time.sleep(0.005)
        canvas.move(square, 50, 100)

window = Tk()

canvas = Canvas(bg=canvas_colour, height=canvas_height, width=canvas_width, highlightthickness=0)
canvas.pack()

square = canvas.create_rectangle(50, 50, 50, 50, width=50, fill="black")

move()

window.mainloop()

这些问题通常可以通过使用 classes 来解决,恕我直言,您应该在编码 GUI 之前学习和使用它。你不应该使用 time() 因为它会中断无限的 Tkinter 循环。改用 Tkinter 的 after() 。此外,您永远不会将 moveBoolean 设置为 False,因此 while 语句会一直运行,直到程序被取消,并且第二次通过正方形将离开 canvas,这就是您看不到任何东西的原因。以下解决了您的问题,但如果使用 class 结构会更好。

from tkinter import *
from functools import partial

canvas_height = 400
canvas_width = 600
canvas_colour = "grey50"
moveBoolean = "True"

def move_it(ctr=0):
    if ctr < len(coords):
        x, y = coords[ctr]
        ctr += 1
        print ctr, x, y
        canvas.move(square, x, y)
        window.after(1000, partial(move_it, ctr))

window = Tk()

canvas = Canvas(bg=canvas_colour, height=canvas_height,
         width=canvas_width, highlightthickness=0)
canvas.pack()

square = canvas.create_rectangle(50, 50, 50, 50, width=50, fill="black")

coords = ((90, 90),
          (180, 180),
          (50, 50))
move_it()

window.mainloop()