Почему переменные kv файла не принимают self?
Как переменная kv файла может сослаться на переменную py файла, использую self?
Дело в том, что App присуще только классам, а self - только функциям.
Переменная kv файла принимает только app:
'''
MDFlatButton:
id: flat
text: app.gg
'''
class Test(MDApp):
gg = '123'
Но мне нужно, чтобы работало вот так:
MDFlatButton:
id: flat
text: self.gg
class Test(MDApp):
def build(self):
gg = '123'
чтобы сослаться на переменную внутри функции, нужен self, который не приемлет kv. Вопрос: как сделать чтобы это работало и не выдавало ошибку?
MDFlatButton:
id: flat
text: self.gg
Или как - нибудь по - другому, но чтобы кнопка MDFlatButton брала аргумент text из функции.
Помогите(
Ответы (1 шт):
Автор решения: RoKuflame
→ Ссылка
в файле kv нужно писать не self а root
вот код который я написал только что и все работает, если у вас не будет работать попробуйте обновить kivymd:
from kivy.uix.screenmanager import Screen
from kivymd.app import MDApp
from kivymd.uix.button import MDRectangleFlatButton, MDFlatButton
KV = '''
Screen:
id: flat
MDFlatButton:
text: root.gg
halign: "center"
'''
class MainApp(MDApp):
def build(self):
gg = '123'
screen = Screen()
screen.add_widget(MDFlatButton())
return screen
MainApp().run()
и вот только на python:
from kivy.uix.screenmanager import Screen
from kivymd.app import MDApp
from kivymd.uix.button import MDRectangleFlatButton, MDFlatButton
class MainApp(MDApp):
def build(self):
flat = '123'
screen = Screen()
screen.add_widget(MDFlatButton(text= flat))
return screen
MainApp().run()
