Ошибка при обработки событий kivy

AttributeError: 'FloatLayout' object has no attribute 'test' появляется при обработки события нажатия на кнопку. Код:

from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window

Activity = '''
FloatLayout:
    
    Button:
        text: "Check product!"
        pos: 300, 250
        size_hint: .2, .2
        background_normal: ''
        background_color: 228/255.0, 202/255.0, 31/255.0, 1
        on_press: root.test()

'''

class Program(App):
    def build(self):
        Window.clearcolor = (184/255.0, 228/255.0, 107/255.0, 255/255.0)
        return Builder.load_string(Activity)
    def test(self):
        return("test is work!")
   
if __name__ in ('__main__', '__android__'):
    Program().run()

Пробовал переустановить kivy к сожалению не помогло.


Ответы (1 шт):

Автор решения: DGDays

НАШЁЁЁЁЁЁЛ!!!!!!!!

from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window

Activity = f'''
FloatLayout:
    Button:
        text: "Check product!"
        pos: 300, 250
        size_hint: .2, .2
        background_normal: ''
        background_color: 228/255.0, 202/255.0, 31/255.0, 1
        on_press: app.test()

'''

class Program(App):
    def build(self):
        Window.clearcolor = (184/255.0, 228/255.0, 107/255.0, 255/255.0)
        return Builder.load_string(Activity)

    def test(self):
        print("test is work!")

Program().run()

Вот таким образом всё должно работать) Вы должны обращаться за методом к самому приложению, ведь он прописан именно в его классе.

→ Ссылка