Как получить доступ к классам, используя kivy? - PullRequest
0 голосов
/ 29 апреля 2019

Как получить доступ к классу в коде Python, используя on_release: по kivy? Например, функцию, которая находится в корне, я использую. root.function() а класс?

on_release: # What to put here to access the function `chama`?

class Tela(ScreenManager):
    pass
class teste(Screen):
    def chama(self):
        pass
    def save_d(self):

class Prg(App):
    def build(self):
        return Tela()

Prg().run()

1 Ответ

0 голосов
/ 13 мая 2019

Если вы используете kv (файл или строку), то хорошим способом доступа к другим классам является использование идентификаторов. Вот пример:

main.py

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder


class Tela(ScreenManager):
    pass

class Teste(Screen):
    def chama(self):
        print ('Hello')

class Teste2(Screen):
    pass

class PrgApp(App):
    def build(self):
        return Builder.load_file('Prg.kv')

PrgApp().run()

Prg.kv:

Tela
    Teste2
        Button
            on_release: t.chama()

    Teste
        id: t

примечание: первая буква класса виджета должна быть заглавной, иначе вы получите синтаксическую ошибку

...