Tkinter球没有动画?

时间:2018-06-03 17:26:29

标签: python tkinter

我有一个小的tkinter应用程序应该有一个球在画布上随机弹跳,并带有以下代码。

运行代码不显示球,我不明白为什么。谁能提供一些见解?我是tkinter和python 3的新手

#GoBall
from tkinter import *
import time

Width = 800
Height = 500
Size = 50
tk = Tk()
canvas = Canvas(tk,width = Width, height=Height,bg = "grey")
canvas.pack()
color = "black"
class Ball:
    def __init_(self):
        self.shape = canvas.oval(0,0,Size,Size,fill=color)
        self.speedx = 9
        self.speedy = 9
        self.active = True
        self.move_active()

    def ball_update(self):
        canvas.move(self.shape,self.speedx,self.speedy)
        pos = canvas.coords(self.shape)
        if  pos[2] >= Width or pos[0] <= 0:
            self.speedx*= -1
        if pos[3] >= Height or pos[1] <= 0:
            self.speedy *= -1

    def move_active(self):
        if self.active :
            self.ball_update()
            tk.after(40,self.move_active)

ball = Ball()
tk.mainloop()

1 个答案:

答案 0 :(得分:1)

您编辑了答案以引入其他错误。它应该是create_oval但是这不会引发错误的原因是你缺少一个下划线,所以你的init函数永远不会运行。

class Ball:
    def __init__(self):
        self.shape = canvas.create_oval(0,0,Size,Size,fill=color)
        self.speedx = 9
        self.speedy = 9
        self.active = True
        self.move_active()

注意init两侧的双下划线(“dunder”)。