Как передать переменную в свойство виджета kivy? - PullRequest
0 голосов
/ 28 января 2019

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

Я пытаюсь определить размер шрифта в main.pyв классе Container (BoxLayout), а затем используйте это значение в файле .kv для динамического изменения размера шрифта.

У меня был другой пример использования строкового свойства таким образом для текста, и оно работает, но когда дело доходит до Числовых или Свойства объекта, это просто не так.

Вот код:

main.py

from kivy.app import App

from kivy.uix.boxlayout import BoxLayout

from kivy.properties import StringProperty, NumericProperty, ObjectProperty

class Container(BoxLayout):
    user_name = StringProperty('Mad Max')
    y = ObjectProperty('100dp')

class MainApp(App):
    def build(self):
        return Container()

if __name__ == "__main__":
    MainApp().run()

main.kv

<Container>:
    Label:
        text: root.user_name
        font_size: root.y

Поскольку это уже работает для строковых файлов, я безподсказка, что делать!

Спасибо, что уделили время на это!

До свидания

1 Ответ

0 голосов
/ 28 января 2019

Итак, вот в чем проблема:

Мне не следовало использовать имя переменной, например "y".Как указал Джон Андерсон , использование «x» или «y» в качестве имени для имени переменной конфликтует с виджетами, поскольку эти имена используются для позиционирования.

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

main.py

title_size = ObjectProperty('50dp')

main.kv

font_size: root.title_size

Так что просто не используйте «x» или «y» для имени переменной!

Спасибо

Джон Андерсон

и надеюсь, что это поможет другим.

Пока

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