Я думаю, что ваш код (по крайней мере, то, что вы опубликовали) должен работать так, как вы ожидаете. Вот версия вашего кода, с дополнительным кодом, чтобы он работал. Button
вызывает func
каждый раз, когда вы нажимаете его, и показывает ожидаемое поведение (с num
как NumericProperty
):
from kivy.lang import Builder
from kivy.properties import NumericProperty
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.app import MDApp
class Screen_mgr(ScreenManager):
pass
class MainScreen(Screen):
def func(self):
app = MDApp.get_running_app()
print(app.num)
if(app.num == 0): #this statement always returns True as num is always 0 in app class
app.num +=10 #How can I access the num variable of app class
Builder.load_string('''
<Screen_mgr>:
MainScreen:
id: main
name: 'main'
Button:
text: 'doit'
on_release: main.func()
''')
class SimpleApp(MDApp):
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.theme_cls.theme_style = "Dark"
num = NumericProperty(0)
def build(self):
return Screen_mgr()
if __name__ == "__main__":
SimpleApp().run()