python新手提问 谢谢大神了

fromtkinterimport*importrandomimporttimeclassBall:def__init__(self,canvas,color):self... from tkinter import*
import random
import time

class Ball:
def __init__(self, canvas, color):
self.canvas = canvas
self.id = canvas.create_oval(10, 10, 25, 25, fill=color)
self.canvas.move(self.id, 245, 100)
starts = [-3, -2, -1, 1, 2, 3]
random.shuffle(starts)
self.x = starts[0]
self.y = -3
self.canvas_height = self.canvas.winfo_height
self.canvas_width = self.canvas.winfo_width

def draw(self):
self.canvas.move(self.id, self.x, self.y)
pos = self.canvas.coords(self.id)
if pos(1) <= 0:
self.y = 3
if pos(3) >= self.canvas_height:
self.y = -3
if pos(0) <= 0:
self.x = 3
if pos(2) >= self.canvas_width:
self.x = -3
tk = Tk()
tk.title("Game")
tk.resizable(0, 0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
canvas.pack()
tk.update()

ball = Ball(canvas, 'red')

while 1:
ball.draw()
tk.update_idletasks()
tk.update()
time.sleep(0.01)

错误如下
C:\Users\admin\AppData\Local\Programs\Python\Python35\python.exe C:/Users/admin/PycharmProjects/untitled3/ball.py
Traceback (most recent call last):
File "C:/Users/admin/PycharmProjects/untitled3/ball.py", line 42, in <module>
ball.draw()
AttributeError: 'Ball' object has no attribute 'draw'

Process finished with exit code 1
展开
 我来答
挺郁闷的人
2016-02-20 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:158
采纳率:100%
帮助的人:53.7万
展开全部
这个报错的原因是你的缩进少了,导致 draw() 方法不在 Ball类 里面, 办法是从17到27行全部再往后缩进一个单位。不幸的是,我刚调试了一下,你这段代码不光是有这一个问题。靠你自己慢慢找了。
丿好超人2
2018-04-15
知道答主
回答量:1
采纳率:0%
帮助的人:879
展开全部
# coding: utf-8
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

from Tkinter import *
import turtle
import random
import time

class Ball:
def __init__(self,canvas,color):
self.canvas=canvas
self.id=canvas.create_oval(10,10,50,50,fill=color) # oval 椭圆形
self.canvas.move(self.id,245,100) # 球开始所处位置
self.x=0 #两边不移动
self.y=-1 #一开始向上移动
self.canvas_height=self.canvas.winfo_height()

def draw(self):
self.canvas.move(self.id,self.x,self.y)
pos=self.canvas.coords(self.id)
if pos[1]<=0: #判断小球的顶部是否小于等于0,如果是,把对象变量设置为1,这样它就不会继续向上移动了
self.y=1
if pos[3]>=self.canvas_height: #判断小球的底部是否大于等于变量canvas_height,即画布高度,
self.y=-1 #如果是,把对象变量y设置回-1

tk=Tk()
tk.title("Game")
tk.resizable(0,0)
#tk.wm_attributes("-topmost",1)
canvas=Canvas(tk,width=700,height=350,bd=0,highlightthickness=0)
canvas.pack()
tk.update()

ball=Ball(canvas,'#f36c21')
while 1:
ball.draw()
tk.update_idletasks()
tk.update()
time.sleep(0.01)

turtle.done()

#raw_input()
#运行闪退问题
# python2. * 后面加上:raw_input()
# python3. * 后面加上:input()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式