Python

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

投稿日:2021年4月17日 更新日:

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学習におすすめの教材

Pythonについて、しっかりと基礎から学びたい、実践的なスキルを身につけたいと考えている方向けに、おすすめの学習教材を紹介します。
これらの教材は、実際に僕が使った教材になっています。

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です!

ベネッセが運営する動画学習サイトUdemyで視聴することができる動画教材です。
(セールの時には¥1,500程度で買えます!)

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

エキスパートPythonプログラミング改訂2版 Pythonプログラミングのベストプラクティスを伝授

本書は、Pythonを使って仕事をしている開発者が普段どのようなツールやテクニックを用いて仕事をしているのか、また開発者が実際に現場で用いているベストプラクティスについて解説した書籍です。本書を読むことで、先進的なPythonプログラマが日常的に使用している開発ノウハウを学ぶことができます。

より実務に近いノウハウが盛りだくさんの書籍です。
Pythonエンジニアを目指す方は持っておいて損はないと思います。

-Python
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Kivy】一番簡単なKivyのインストール手順【Python】

Python用のGUIツールとして、海外では知名度が高いのがKivyです。Kivyは、マルチプラットフォーム対応ですので、Pythonでのアプリ開発の選択肢が大きく広がります。 Kivyの環境構築は、 …

【Kivy】ボタンのフィードバックと重い処理を分ける方法【Python】

Kivyでアプリ開発をしていると、MVCのように処理と表示を分けたくなることがあると思います。その時、ボタンをトリガーにすると、ボタンのフィードバックのタイミングが処理の終了タイミングと同じになってし …

【Python】マルチスレッドの使い方【Thread】

Pythonには、マルチスレッドと呼ばれるテクニックがあります。一般的にプログラム言語は上から下に順番に1行ずつ実行されるものです。Pythonでは、それをスレッドとして複数同時に取り扱うことが可能で …

【Python】pytestの使い方【テスト駆動開発】

今回は、テスト駆動開発の足掛けとして、pytestの使い方を紹介します。 テスト駆動開発とは、テストのことを第一に考えて実装する開発法のことです。アジャイル開発のように、設計・開発・テストを短く繰り返 …

【Python】GUIライブラリの比較【Tkinter, PyQt, Kivy】

Python言語は、機械学習やサーバーサイドのイメージが強いと思うのですが、実はGUIアプリケーションを作成することも可能です。 今回は、Pythonで代表的なGUIツール4つを比較してみました。 P …

yassanさんのプロフィール写真

yassan
インフラエンジニア。
独学でインフラ・クラウドについて学んでいます。
大阪 / 20代後半 / 決闘者 / FE / AWS-SAA

twitter: @yassan10787859