Отправка аргументов в функцию Kivy.app.on_start - PullRequest
0 голосов
/ 25 марта 2020

У меня есть некоторый код, который выглядит следующим образом (MRE):

from kivy.app import App

    def my_function(*arguments):
       *some actions with App.root*

MyApp = App()
MyApp.on_start = my_function(some arguments)
MyApp.run()

Возвращает

 AttributeError: 'NoneType' object has no attribute '*what I'm trying to access*'

Играя немного, я узнал, что проблема в том, что я посылаю аргументы когда я назначаю

MyApp.on_start = my_function(some arguments)

, я пробовал несколько решений, таких как использование

setattr(MyApp, 'on_start', my_function(some arguments))

и назначение вызова

MyApp.run(some arguments)

, но ничего работает. Что мне делать?

Спасибо!

Ответы [ 2 ]

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

Я думаю, что вы можете сделать это, используя partial:

from functools import partial
from kivy.app import App


def my_function(*arguments):
    print('in my_function')
    for arg in arguments:
        print('\t', arg)

MyApp = App()
MyApp.on_start = partial(my_function, 'abba', 'dabba')
MyApp.run()
0 голосов
/ 26 марта 2020

Как насчет установки функции on_start класса App для вызова вашего my_function класса?

from kivy.app import App

class MyApp(App):
    def on_start(self):
        self.my_function('foo','bar')

    def my_function(self, *args):
        print(args)

MyApp().run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...