Редактировать виджет в кв - PullRequest
0 голосов
/ 25 марта 2020

У меня есть виджет, который я определил на языке Kv, который существует в макете, который я также определил на языке Kv. Я хотел бы изменить текст виджета в макете в Kv. Как бы я go о это?

Python код:

import kivy
kivy.require('1.11.1')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout


class Test(BoxLayout):
    pass


class KivyTestApp(App):
    def build(self):
        return Test()


app = KivyTestApp()
app.run()

Код Kv:

<Header@BoxLayout>:
    orientation: 'horizontal'
    size_hint_y: 0.2

    Button:
        text: 'Button 1'
    Button:
        id: edit_but

<Test>:
    orientation: 'vertical'

    Header:
        edit_but.text: 'Button 2'
        # How do I do this ^ ?
    Label:
        text: 'Filler'

1 Ответ

1 голос
/ 25 марта 2020

В вашем kv вы можете добавить Property к вашему правилу Header (я назвал его edit_text). Это свойство можно использовать для установки текста Button с помощью text: root.edit_text. Это Property может быть установлено всякий раз, когда вы используете Header в kv как edit_text: 'Button 2':

<Header@BoxLayout>:
    orientation: 'horizontal'
    size_hint_y: 0.2
    edit_text: ''

    Button:
        text: 'Button 1'
    Button:
        id: edit_but
        text: root.edit_text

<Test>:
    orientation: 'vertical'

    Header:
        edit_text: 'Button 2'
        # How do I do this ^ ?
    Label:
        text: 'Filler'
...