プログラム開始時にPythonからKivyウィジェット値を初期化する

ジェームズC

プログラムの起動時にKivyのウィジェットのいくつかの値を初期化しようとしていますが、成功しません。簡略化されたPythonコードは次のとおりです。

inital_text = "init text"

class MainApp(App):

    def initialize_widgets(self):
        self.root.ids.my_label.text = initial_text

if __name__ == '__main__':
    MainApp().run()
    MainApp.initialize_widgets(App)

そして、kvファイルからの関連部分は次のとおりです。

Label:
    id: my_label
    text: "default text" 

プログラムを実行すると、ラベルに「デフォルトのテキスト」と表示されます。終了すると、次のエラーが発生します。

line 5, in initialize_widgets
self.root.ids.my_label.text = initial_text
AttributeError: type object 'App' has no attribute 'root'

私は他の回避策を試しましたが、いくつかは非常に絶望的なものでしたが、成功しませんでした。

イコリム

on_startイベントを使用して、プログラムの開始時にラベルのテキストを初期化します。以下の例では、Clock.schedule_onceイベントが追加され、初期値とその後の変更が示されています。

注意

この例では、ルートウィジェットはラベルウィジェット(root)であり、ルートのディクショナリ(root.ids)は空です。id: my_textinputルートの子として追加された、が付いた別のウィジェットがある場合、ルートのディクショナリには1つのID、つまりmy_textinputが含まれますAprint(self.root.ids)はこれを示します。

自己-キーワード自己参照「現在のウィジェットのインスタンス」、すなわちアプリケーション。

Kivy言語»ids

kvファイルが処理されると、idでタグ付けされたすべてのウィジェットへのweakrefがルートウィジェットのidsディクショナリに追加されます。

切れ端

from kivy.app import App


initial_text = "init text"


class MainApp(App):

    def on_start(self):
        self.root.text = initial_text


if __name__ == '__main__':
    MainApp().run()

main.py

from kivy.app import App
from kivy.clock import Clock

initial_text = "init text"


class MainApp(App):

    def on_start(self):
        Clock.schedule_once(self.initialize_widgets, 5)

    def initialize_widgets(self, dt):
        self.root.text = initial_text


if __name__ == '__main__':
    MainApp().run()

出力

Img01-アプリのスタートアップ Img02-ラベルのテキストが変更されました

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

プログラムの起動時にカスタムクラスからメインウィンドウオブジェクトを初期化するにはどうすればよいですか?

分類Dev

dijit / _HasDropDownからプログラムで囲んでいるウィジェットから継承するdojoウィジェットを開く方法は?

分類Dev

オフライン時にログインページからプログレッシブウェブアプリの使用を開始する方法

分類Dev

フラッターラップウィジェットのテキストウィジェットを前のウィジェットの最後から開始し、前のウィジェットの下から開始しないようにするにはどうすればよいですか?

分類Dev

Cでプログラムの開始時に時間のカウントを開始する方法

分類Dev

開始時にexplorer.exeを終了し、プログラムを開始し、終了時にウィンドウをシャットダウンするスクリプトを作成しようとしています

分類Dev

プログラムでウィジェットを作成する

分類Dev

開始時に既知のプロセスからTCPトラフィックをキャプチャする

分類Dev

Pythonプログラムを実行すると、tkウィジェットが開かないのはなぜですか?

分類Dev

Javaライブラリからプログラム開始時にメソッドを呼び出す方法は?

分類Dev

プログラムの開始時にテキストボックスに値を割り当てる方法

分類Dev

Qt外部スタイルシートからプログラムで追加されたウィジェットにスタイルを適用する

分類Dev

異なる構成(開発、テスト、ステージング)から初期化するようにXunitdotnetコアプロジェクトを構成する方法

分類Dev

cmdと同時にプログラムを開始する方法

分類Dev

WordPressでプログラム的にサイト訪問カウンターウィジェットを追加する

分類Dev

プログラムの開始時に#defineをランダム化します

分類Dev

別の.Netプロジェクトから.NetCoreAPIServerプロジェクトをプログラムで開始および停止するにはどうすればよいですか。この場合、コンソールアプリケーション?

分類Dev

Python / Kivy:動的なラベルウィジェットと値を配置する方法

分類Dev

Kivyの別のウィジェットからプロパティを取得する

分類Dev

Cバックグラウンドで他のプログラムからプログラムを開始し、プログラムから閉じます

分類Dev

Jarvisウィジェットをプログラムで展開/折りたたむにはどうすればよいですか?

分類Dev

ウィジェットの幅を設定する方法(プログラムで)

分類Dev

プログラムでウィジェットの幅を制御する

分類Dev

Pythonで目的の時間に最も近い時間からプロットを開始する方法

分類Dev

Pandas DataFrameから開始してスタック時間ヒストグラムをプロットする方法は?

分類Dev

Androidのホーム画面からウィジェットをプログラムで設定および削除することは可能ですか?

分類Dev

Qtウィジェット(QPushButton、QTextEdit、QLabel)をプログラムでQt Designerレイアウトに追加するにはどうすればよいですか?

分類Dev

CQ5カスタムウィジェットの開発-ハードコードされた値をウィジェットスクリプトの外部に保持する-グローバル変数を使用する

分類Dev

Kivyウィジェットをある位置から開始して移動することができません

Related 関連記事

  1. 1

    プログラムの起動時にカスタムクラスからメインウィンドウオブジェクトを初期化するにはどうすればよいですか?

  2. 2

    dijit / _HasDropDownからプログラムで囲んでいるウィジェットから継承するdojoウィジェットを開く方法は?

  3. 3

    オフライン時にログインページからプログレッシブウェブアプリの使用を開始する方法

  4. 4

    フラッターラップウィジェットのテキストウィジェットを前のウィジェットの最後から開始し、前のウィジェットの下から開始しないようにするにはどうすればよいですか?

  5. 5

    Cでプログラムの開始時に時間のカウントを開始する方法

  6. 6

    開始時にexplorer.exeを終了し、プログラムを開始し、終了時にウィンドウをシャットダウンするスクリプトを作成しようとしています

  7. 7

    プログラムでウィジェットを作成する

  8. 8

    開始時に既知のプロセスからTCPトラフィックをキャプチャする

  9. 9

    Pythonプログラムを実行すると、tkウィジェットが開かないのはなぜですか?

  10. 10

    Javaライブラリからプログラム開始時にメソッドを呼び出す方法は?

  11. 11

    プログラムの開始時にテキストボックスに値を割り当てる方法

  12. 12

    Qt外部スタイルシートからプログラムで追加されたウィジェットにスタイルを適用する

  13. 13

    異なる構成(開発、テスト、ステージング)から初期化するようにXunitdotnetコアプロジェクトを構成する方法

  14. 14

    cmdと同時にプログラムを開始する方法

  15. 15

    WordPressでプログラム的にサイト訪問カウンターウィジェットを追加する

  16. 16

    プログラムの開始時に#defineをランダム化します

  17. 17

    別の.Netプロジェクトから.NetCoreAPIServerプロジェクトをプログラムで開始および停止するにはどうすればよいですか。この場合、コンソールアプリケーション?

  18. 18

    Python / Kivy:動的なラベルウィジェットと値を配置する方法

  19. 19

    Kivyの別のウィジェットからプロパティを取得する

  20. 20

    Cバックグラウンドで他のプログラムからプログラムを開始し、プログラムから閉じます

  21. 21

    Jarvisウィジェットをプログラムで展開/折りたたむにはどうすればよいですか?

  22. 22

    ウィジェットの幅を設定する方法(プログラムで)

  23. 23

    プログラムでウィジェットの幅を制御する

  24. 24

    Pythonで目的の時間に最も近い時間からプロットを開始する方法

  25. 25

    Pandas DataFrameから開始してスタック時間ヒストグラムをプロットする方法は?

  26. 26

    Androidのホーム画面からウィジェットをプログラムで設定および削除することは可能ですか?

  27. 27

    Qtウィジェット(QPushButton、QTextEdit、QLabel)をプログラムでQt Designerレイアウトに追加するにはどうすればよいですか?

  28. 28

    CQ5カスタムウィジェットの開発-ハードコードされた値をウィジェットスクリプトの外部に保持する-グローバル変数を使用する

  29. 29

    Kivyウィジェットをある位置から開始して移動することができません

ホットタグ

アーカイブ