[英]Error message in graphics.py
我是一名正在学习python的高中生,对为什么我在此脚本中收到错误消息有些困惑。 应该提示用户输入有关他们几岁的信息,然后以天,小时和分钟为单位返回信息。 我正在使用Graphics.py模块来完成此任务。 我得到的错误是:
how old are you.py", line 17, in <module>
years=entry1.getText()
AttributeError: 'NoneType' object has no attribute 'getText'
我知道该模块已正确安装,因为getText函数可在另一个脚本上运行。 我的代码可以在下面看到。 谢谢你的帮助!
from graphics import*
win=GraphWin('How Old Are You?',250,500)
win.setBackground ('Gray')
entry1= Entry(Point(125,100),10).draw(win)
entry2= Entry(Point(125,200),10).draw(win)
entry3= Entry(Point(125,300),10).draw(win)
Text(Point(125,50),'How many years old are you?').draw(win)
Text(Point(125,150),'What month in the year? (number)').draw(win)
Text(Point(125,250),'How many weeks into the month?').draw(win)
Text(Point(125,25),'When done click outside a box').draw(win)
win.getMouse()
years=entry1.getText()
months=entry2.getText()
days=entry3.getText()
totalDays=(years*365)+(months*30)+(days)
totalHours=((years*365)+(months*30)+(days))*24
totalMinutes=(((years*365)+(months*30)+(days))*24)*60
Text(Point(125,350),totalDays)
Text(Point(125,400),totalHours)
Text(Point(125,450),totalMinutes)
我不知道您正在使用的graphics
库,但是您的错误似乎试图一次完成太多。
你做:
entry1= Entry(Point(125,100),10).draw(win)
entry2= Entry(Point(125,200),10).draw(win)
entry3= Entry(Point(125,300),10).draw(win)
在这里的每一行中,您确实创建了一个对象-通过调用Entry(...)
,并对该对象调用一个方法。 draw
方法的返回值最终存储在变量中。
通常,在Python对象中,方法不会将其对象返回。 如果该方法确实执行了一个操作(如名称draw
),则通常将返回None
-这就是这里发生的情况,正如我们在您的错误消息中所看到的。
因此,您要做的就是首先创建您的条目,然后在它们上调用draw
方法:
entry1= Entry(Point(125,100),10)
entry2= Entry(Point(125,200),10)
entry3= Entry(Point(125,300),10)
entry1.draw(win)
entry2.draw(win)
entry3.draw(win)
除此之外,如果您不希望代码如此重复,则可以在循环中创建条目并将其存储在Python列表中:
条目= []
for vpos in (100,200,300):
entry = Entry(Point(125,vpos),10)
entries.append(entry)
entry.draw(win)
Text(Point(125,50),'How many years old are you?').draw(win)
Text(Point(125,150),'What month in the year? (number)').draw(win)
Text(Point(125,250),'How many weeks into the month?').draw(win)
Text(Point(125,25),'When done click outside a box').draw(win)
win.getMouse()
years, months, days = (entry.getText() for entry in entries)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.