python - 我在代码底部附近收到一个列表不可调用错误,其中显示 ball.append,但我不知道如何修复它

标签 python tkinter

我有一个程序,其中一个球只是在屏幕上弹跳。我使用类、列表和 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/

相关文章:

python - Google App EngineSearch API 中的分页

python - Scrapy LinkExtractor - 限制每个 URL 抓取的页面数量

python - 使用对象调用函数?

python - Python 中具有不同参数列表的父类(super class)构造函数调用

python - 为条目和文本 tkinter 标签设置相同的宽度

python - 如何使用 lxml 迭代 GraphML 文件

python - tkinter:将鼠标滚轮绑定(bind)到滚动条

python - 有没有办法让 tkinter 在每个窗口中显示标签,而不必一遍又一遍地写出每一行代码

python - tkinter - 如何修复标签和检查按钮未对齐?

python - Python Tkinter程序崩溃时忘记了()