App.get_running_app (). Root.my_method () - у объекта 'NoneType' нет атрибута 'my_method () - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь вызвать функцию на моем Screenmanager после нажатия кнопки. Но вызов (App.get_running_app (). Root.) Не дает мне объект.

Кнопки не будут работать для меня, и я не знаю почему.

Кажется, есть проблема, что у меня нет корневого объекта, но почему. Это работало до того, как я попробовал это с приборной панелью.

Я попытался включить методы из класса ScreenManager, которые я не мог вызвать и вызывать методы из класса Dashboard, функции которого.

Python файл:

from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.app import App
class DashboardScreen(Screen):

    def __init__(self, **kwargs):
        super(DashboardScreen, self).__init__(**kwargs)
        # Initialize Target Container
        App.get_running_app().root.get_character_selection_screen()


class MyScreenManager(ScreenManager):

    def __init__(self, **kwargs):
        super(MyScreenManager, self).__init__(**kwargs)
        self.add_widget(DashboardScreen(name='dashboard'))

    def get_character_selection_screen(self):
        pass


class MatrixApp(App):

    def build(self):
        return MyScreenManager()


if __name__ == '__main__':
    MatrixApp().run()

Файл Kivy:

<DashboardScreen>:
    BoxLayout:
        orientation: "vertical"
        Label:
            text: "test"

Сообщение об ошибке AttributeError: у объекта 'NoneType' нет атрибута 'Get_character_selection_screen'

Отступы могут быть испорчены, потому что я пытался загрузить их здесь.

1 Ответ

1 голос
/ 22 мая 2019

Попробуйте запланировать это с часами, чтобы вы были уверены, что приложение и виджеты готовы

from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.app import App
from kivy.clock import Clock

class DashboardScreen(Screen):

    def __init__(self, **kwargs):
        super(DashboardScreen, self).__init__(**kwargs)
        Clock.schedule_once(self.after_init)

    def after_init(self, dt):
        App.get_running_app().root.get_character_selection_screen()
...