#python #kivy
#python #kivy
Вопрос:
Мне нужно изменить свойство в функции, которая вызывается при изменении свойства. Это вызывает рекурсию. Например:
from kivy.app import App;
from kivy.uix.widget import Widget;
from kivy.uix.button import Button;
from kivy._event import EventDispatcher;
class test(Button, EventDispatcher):
def __init__(self):
super().__init__();
self.bind(size = self.change_width);
def change_width(self, instance, value):
print('im changed');
self.width-= 20;
t = test();
t.width = 120;
class testApp(App):
def build(self):
return t;
if __name__ == '__main__':
testApp().run();
Когда где-либо размер кнопки изменился, мне нужно уменьшить эту ширину. Есть ли какой-либо способ избежать рекурсии?
Ответ №1:
Вы можете избежать рекурсии, отключив привязку при изменении width
:
def change_width(self, instance, value):
print('im changed');
self.unbind(size=self.change_width);
self.width -= 20;
self.bind(size=self.change_width);