我有一个小的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()
答案 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”)。