0

私は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)
4

1 に答える 1

4

あなたが使用しているライブラリはわかりません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)
于 2012-10-12T00:26:04.837 に答える