Ошибка при попытке добавить кнопку на gridlayот в другом классе - PullRequest
0 голосов
/ 14 ноября 2018

Мое приложение хочет создать список из строк, набранных в поле TextInput, и показать их в gridlayout в центре окна после нажатия кнопки "Buscar".Я делю переменные и функции между классами, но когда я пытаюсь добавить новую кнопку с TextInput.text внутри gridlayout, появляется сообщение об ошибке:

"AttributeError: 'kivy.properties.ObjectProperty' object has no attribute 'add_widget'" 

Спасибо

Интерфейс выглядит следующим образом

Это мой файл .py

from kivy.app import App
from kivy.uix.button import Button
from kivy.properties import ObjectProperty, NumericProperty, StringProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.scrollview import ScrollView

class Lista(ScrollView):
    lista_repuestos = ObjectProperty()

class CustomWidget(FloatLayout):
    campo_de_busqueda_text_input = ObjectProperty()
    repuesto = StringProperty('')

    def submit_repuesto(self):
        self.repuesto = self.campo_de_busqueda_text_input.text
        Lista.lista_repuestos.add_widget(Button(text=self.repuesto))


class CustomWidgetApp(App):
    def build(self):
        return CustomWidget()

if __name__ == "__main__":
    CustomWidgetApp().run()

Это мой файл .kv

CustomWidget:

<CustomWidget>:

    campo_de_busqueda_text_input: campodebusqueda

    TextInput:
        id: campodebusqueda
        size_hint: .7, .1
        pos_hint: {"x": .15, "y": .85}

    Button:
        on_release: root.submit_repuesto()
        size_hint: .1, .1
        pos_hint: {"x": .85, "y": .85}
        text: "Buscar"

    Label:
        size_hint: .15, .05
        pos_hint: {"x": .05, "y": .15}
        text: "Descripción"
        text_size: self.size
        halign: "left"
    Label:
        size_hint: .15, .05
        pos_hint: {"x": .05, "y": .10}
        text: "Referencia"
        text_size: self.size
        halign: "left"
    Label:
        size_hint: .15, .05
        pos_hint: {"x": .05, "y": .05}
        text: "Cantidad"
        text_size: self.size
        halign: "left"


<Lista>:

    lista_repuestos: listarepuestos

    GridLayout:

        id: listarepuestos
        size_hint: .7, .6
        pos_hint: {"x": .15, "y": .25}
        cols: 1
        row_default_height: 50
        row_force_default: True
        padding: 5
        height: self.minimum_height
        size_hint_y: None

1 Ответ

0 голосов
/ 14 ноября 2018

Ваша строка в CustomWidget:

Lista.lista_repuestos.add_widget(Button(text=self.repuesto))

должен ссылаться на экземпляр Lista, а не на сам класс.

...