Python プログラミング

【Kivy】AttributeError: 'ROOT' object has no attribute '_disabled_count'の対処法【Python】

Kivyでのアプリ開発をしていると、このようなエラーに出くわすことがあります。
こちらのエラー対処法を紹介します。

結論:Widgetを定義したクラスのコンストラクタを修正

この場合は、kvファイルではなくpythonファイルの方を修正しましょう。

おそらく、widgetを定義しているクラスのコンストラクタに与える引数を誤っていることと思います。
ですので、以下のように **kwargs を引数に与えましょう。

class rootウィジェット(親ウィジェット):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # 以降処理

補足

発生条件

こちらのエラー、kivyのバージョンによっては発生しないようです。

僕の実行環境である、kivy 1.11.1 では発生しました。

super()の定義

Python3系になってからは、super()に明示的にsuperクラスオブジェクトを書かなくても良くなりました。
(もちろん、明示的に記載しても大丈夫)
したがって、上記のコードでも、super()の引数には何も与えていませんが、正しく実行できると思います。

Kivyは、一昔前まではandroidやiOSへの移植については、Python2系でしかできないという制約がありました。
そのような背景もあり、Python2系の書き方が残っている場合も多いです。
現在では、KivyはPython3系に対応していますし、Python自体も3系が主流です。

インターネットでKivyの実装について調べるときは、Python3系の書き方にしたがっているかどうかも確認しつつが良いかと思います。

-Python, プログラミング
-,