我有一个程序,其中一个球只是在屏幕上弹跳。我使用类、列表和 for 循环来创建更多在屏幕上弹跳的球。我收到一条错误消息,提示 list is not callable
。
from tkinter import *
from random import uniform, randrange
import time
#left,top,right,bottom
tk = Tk()
canvas = Canvas(tk,width=600,height=600)
canvas.pack()
class Ball:#ball characteristics
def __init__(self,color,size):
self.shape = canvas.create_oval(10,10,50,50,fill="blue")
self.xspeed = randrange(1,6)
self.yspeed = randrange(1,6)
def move(self):#ball animation
canvas.move(self.shape,self.xspeed,self.yspeed)
pos = canvas.coords(self.shape)
if pos[0] <= 0 or pos[2] >= 600:#if ball hits the wall#
self.xspeed = -self.xspeed
if pos[1] <= 0 or pos[3] >= 600:
self.yspeed = -self.yspeed
balls = []
for i in range(100):
balls.append(Ball("red",50))
while True:
for ball in balls():
ball.move()
tk.update()
time.sleep(0.01)
最佳答案
您正在尝试调用 balls
,但 balls
是一个列表,因此不可调用。取出调用:
for ball in balls():
ball.move()
应该是:
for ball in balls:
ball.move()
换句话说,问题正是错误消息所说的,就在它所说的那一行。
关于python - 我在代码底部附近收到一个列表不可调用错误,其中显示 ball.append,但我不知道如何修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475983/