KivyMD как получить и изменить текст из текстового поля KivyMD - PullRequest
0 голосов
/ 14 июля 2020
class MainWindow(Screen):
    def __init__(self, **kwargs):
        super(MainWindow, self).__init__(**kwargs)
        gang = ObjectProperty(None)

        gang.text = 'Button'
class SecondWindow(Screen):
    def __init__(self, **kwargs):
        super(SecondWindow, self).__init__(**kwargs)      
        
        
Test().run()

И код KV

WindowManager:
    MainWindow:
    SecondWindow:

<MainWindow>:
    gang:gang
    MDFillRoundFlatButton
        
        text:"Validate"
        size_hint:0.3, None
        pos_hint: {'center_x': 0.5, 'top':0.2}
    MDTextFieldRound
        id:gang
        hint_text:"Enter Your License Key"
        multiline:False
        size_hint: (0.7, None)
        pos_hint: {"center_x": .5, "center_y": .5}
        halign:"center"
<SecondWindow>:
    name: "second"
    on_enter:app.file_manager_open()

Каждый раз, когда я запускаю это, я получаю вывод 'AttributeError:' kivy.properties.ObjectProperty 'объект не имеет атрибута' text '' Я как-то угадываю свойство объекта не синхронизируется, прошу прощения, что код очень испорчен.

1 Ответ

0 голосов
/ 14 июля 2020

Когда вы определяете Property в классе, он должен находиться вне любых методов. Попробуйте изменить:

class MainWindow(Screen):
    def __init__(self, **kwargs):
        super(MainWindow, self).__init__(**kwargs)
        gang = ObjectProperty(None)

        gang.text = 'Button'

на:

class MainWindow(Screen):
    gang = ObjectProperty(None)

    def on_kv_post(self, base_widget):
        self.gang.text = 'Button'

Это правильно определяет ObjectProperty и задерживает установку свойства text до тех пор, пока не будет установлено ObjectProperty.

...