簡體   English   中英

graphics.py中的錯誤消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM