Kivy; Как определить ширину KV lang в коде python? - PullRequest
0 голосов
/ 26 апреля 2020

Когда событие уровня окна (например, щелчок мыши или перетаскивание) происходит в приложении Kivy, оно передается всему дереву виджетов. У меня есть несколько виджетов одного и того же класса, распределенных по моему интерфейсу, и мне нужно знать, какое событие произошло. Хотя я могу фильтровать, используя self.collide(), после того, как я это сделаю, мне нужно знать, КАКОЙ виджет это - т.е. это верхний виджет в моем пользовательском интерфейсе, или нижний, или что.

Я намеревался сделать это, присваивая уникальное имя значению «id» в файле kv для каждого соответствующего виджета, а затем запускать наблюдения в моем коде на основе этого. Но я был разочарован тем, что обнаружил , что "... обратите внимание, что идентификатор не будет доступен в экземпляре виджета ..."

, так как лучше всего дать каждому виджету уникальный идентификатор в файле kv lang, который может быть ссылкой в ​​коде? Конечно, я мог бы использовать свойства объекта, но это кажется излишним. Есть какой-то более простой метод?

1 Ответ

1 голос
/ 26 апреля 2020

Просто дайте виджетам идентифицирующий атрибут или свойство. Если вам нужен идентификатор строки, используйте StringProperty. Мне не совсем понятно, что эта структура приложения - лучший способ решить вашу проблему, но она будет работать нормально.

...