Tkinter で発生する一般的なエラーは「AttributeError: NoneType object has noattribute」です。このエラーを理解するには、ウィジェットのレイアウトに使用される Grid、Pack、および Place 関数の動作を理解する必要があります。
このエラーは、次の値にアクセスしようとすると発生します。適切に初期化またはレイアウトされていないウィジェットの属性。 Tkinter ウィジェットのグリッド、パック、および配置関数 (Entry を含む) は None を返します。ウィジェットでメソッドを実行すると、式の結果はそのメソッドの戻り値によって決まります。
たとえば、以下のコード スニペットでは次のようになります。
entryBox = Entry(root, width=60).grid(row=2, column=1, sticky=W)
コードEntry ウィジェットを作成し、グリッド メソッドを使用してそのレイアウトを設定しようとします。ただし、grid は None を返すため、entryBox は事実上 None になります。その結果、コードの後半で get() 属性にアクセスしようとすると、
print(entryBox.get())
None には get() 属性がないため、エラーが発生します。
この問題を解決するには、ウィジェットの作成とレイアウトを 2 つの異なる行に分ける必要があります。
entryBox = Entry(root, width=60) entryBox.grid(row=2, column=1, sticky=W)
これこれにより、Entry ウィジェットが正しく初期化され、参照がentryBox に正しく保存されるようになり、「NoneType オブジェクトには属性がありません」エラーが発生することなくその属性にアクセスできるようになります。
以上が私の Tkinter コードが「AttributeError: NoneType object has noattribute」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。