Python 为什么我的画布窗口不显示我创建的移动多边形?

Python 为什么我的画布窗口不显示我创建的移动多边形?,python,tkinter,polygon,tkinter-canvas,Python,Tkinter,Polygon,Tkinter Canvas,此代码尝试在画布上移动三角形 import time from tkinter import * tk = Tk() canvas = Canvas(tk, width=500, height=400) canvas.pack canvas.create_polygon(10, 10, 10, 60, 50, 35) for x in range(0, 60): canvas.move(1, 5, 0) tk.update() time.sleep(0.05) 不幸的是

此代码尝试在画布上移动三角形

import time
from tkinter import *
tk = Tk()
canvas = Canvas(tk, width=500, height=400)
canvas.pack
canvas.create_polygon(10, 10, 10, 60, 50, 35)
for x in range(0, 60):
    canvas.move(1, 5, 0)
    tk.update()
    time.sleep(0.05)
不幸的是,每当我运行程序时,它都会调出画布窗口,但根本不显示三角形。我使用的是3.7版。

代码有什么问题?

canvas.pack
应该是
canvas.pack()
。画布从未显示。

正如@acw1668所指出的,您的错误是忘记调用
画布
小部件的
打包
方法

但是,代码中还有更多的怪癖需要解决:

  • 时间。GUI中的睡眠
    使其无响应;不要这样做,改用
    tk.after
  • 使用
    tk
    来命名您的
    root
    是一个相当糟糕的主意,尤其是对于其他将阅读您的代码的人来说
  • 不建议使用star导入
  • 当mainloop可以自动运行GUI时,也不建议使用
    tk.update
以下是一个避免上述几点的示例:

import tkinter as tk


def move_polygon(i=0):
    canvas.move(polygon, 5, 0)
    if i < 60:
        canvas.after(50, move_polygon, i+1)


root = tk.Tk()
canvas = tk.Canvas(root, width=500, height=400)
canvas.pack()

polygon = canvas.create_polygon(10, 10, 10, 60, 50, 35)
move_polygon()

root.mainloop()
将tkinter作为tk导入
def move_多边形(i=0):
画布移动(多边形,5,0)
如果i<60:
canvas.after(50,移动_多边形,i+1)
root=tk.tk()
canvas=tk.canvas(根,宽度=500,高度=400)
canvas.pack()
多边形=画布。创建_多边形(10,10,10,60,50,35)
移动_多边形()
root.mainloop()

haha,在采摘低垂果实@acw1668方面有一些好名声