'Carousel.remove_widget ()' вызывает IndexError, когда активен последний слайд, и ошибка не доставляется пользователю. Как мне пройти мимо индекса Исключение ошибок.
Когда в коде вызывается remove_widget () или clear_widgets (), выдает и индекс ошибки. Как мне обойти ошибку индекса.
вот код
from kivy.app import App
from kivy.factory import Factory
from kivy.clock import Clock
import random
N_SLIDES = random.choice(range(2, 4)) # Has to be 2 or greater
class SampleApp(App):
def build(self):
c = Factory.Carousel()
for i in range(N_SLIDES):
c.add_widget(Factory.Label(text=str(i), font_size=100))
c.index = N_SLIDES - 1 # switch to the last slide
return c
def on_start(self):
c = self.root
Clock.schedule_once(
lambda __: c.remove_widget(random.choice(c.slides)), # remove any slide
c.anim_move_duration + 1)
if __name__ == '__main__':
SampleApp().run()
вот ошибка
Traceback (most recent call last):
File "kivy/properties.pyx", line 599, in kivy.properties.Property.dispatch
ps.observers.dispatch(obj, ps.value, None, None, 0)
File "kivy/_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
result = self._dispatch(
File "kivy/_event.pyx", line 1120, in kivy._event.EventObservers._dispatch
return f(obj, value)
File "kivy/properties.pyx", line 1503, in kivy.properties.AliasProperty.trigger_change
cpdef trigger_change(self, EventDispatcher obj, value):
File "kivy/properties.pyx", line 1505, in kivy.properties.AliasProperty.trigger_change
dvalue = ps.getter(obj)
File "/tmp/firefox/kivy/kivy/uix/carousel.py", line 194, in _curr_slide
return self.slides[self.index or 0]
IndexError: list index out of range
Exception ignored in: 'kivy.properties.observable_list_dispatch'
Traceback (most recent call last):
File "kivy/properties.pyx", line 599, in kivy.properties.Property.dispatch
ps.observers.dispatch(obj, ps.value, None, None, 0)
File "kivy/_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
result = self._dispatch(
File "kivy/_event.pyx", line 1120, in kivy._event.EventObservers._dispatch
return f(obj, value)
File "kivy/properties.pyx", line 1503, in kivy.properties.AliasProperty.trigger_change
cpdef trigger_change(self, EventDispatcher obj, value):
File "kivy/properties.pyx", line 1505, in kivy.properties.AliasProperty.trigger_change
dvalue = ps.getter(obj)
File "/tmp/firefox/kivy/kivy/uix/carousel.py", line 194, in _curr_slide
return self.slides[self.index or 0]
IndexError: list index out of range