【解決方法】別のクラスの変数を変更する (KIVY)

プログラミングQA


私の問題の簡略版は次のとおりです。

<ValueInput>:
     TextInput:
         id: value_input
         on_text_validate: root.value_input(value_input.text)

<DefineVariables>:
     Button:
        on_press: root.clear_text()

ValueInput と DefineVariables という 2 つの異なるクラスがあります。 私が望んでいることは、 からボタンを押すと、ユーザーが から TextInput に書き込んだテキストがクリアされることです。

.py ファイル内:

class MainWidget(BoxLayout):

    ValueInput = NumericProperty(0)


class ValueInput(MainWidget):

    def value_input(self, ValueInput):
        ValueInput = ValueInput
        self.ids.value_input.text = ""  #This clears the TextInput box.


class DefineVariables(MainWidget):

    def clear_text(self):
        CLEAR HERE

.py ファイルにアクセスすると、次のことがわかりました。

self.ids.value_input.text

ValueInput クラスでは、Enter キーを押すとテキストがクリアされます。 でも、私は望んでいません

self.ids.value_input.text

そのクラスに含まれる関数。 私はやってみたいです

self.ids.value_input.text

Kivy ファイルで宣言したボタンを押したとき。

そうするとどうなりますか

def clear_text(self):
    self.ids.value_input.text = ""

.kvファイルでroot.clear_text()を使用してclear_text関数を呼び出すと、次のエラーが発生します。

AttributeError: 'super' object has no attribute '__getattr__'

どうすればこれを機能させることができるでしょうか?

私が試したこと:

DefineVariables で clear_text 関数を使用しましたが、成功しませんでした。

解決策 2

解決策はありますが、すでに答えが出ていると思います
この問題の解決策をまだ探している場合は、私に返信してください

コメント

タイトルとURLをコピーしました