-
-
Notifications
You must be signed in to change notification settings - Fork 695
Open
Description
Description of the Bug
Anytime i try add Widget to the MDRecycleGridLayout i get an error, I tried using a plain kivy Button and it works each time but when i use MDFabButton it works 1 of 10 times or consistently dosen't work.
I tested on linux and compiled for android same result.
Code
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import AsyncImage
from kivymd.uix.recyclegridlayout import MDRecycleGridLayout
from kivymd.uix.recycleview import MDRecycleView
from kivy.uix.screenmanager import Screen
from kivymd.uix.button import MDFabButton
from kivymd.app import MDApp
class Thumb(ButtonBehavior, AsyncImage):
pass
class TestApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.rv = None
self.view_data = [{'source': 'img1.jpg'}]
def build(self):
screen = Screen()
self.rv = MDRecycleView()
grid = MDRecycleGridLayout(
cols=3,
default_size=(None, 120),
default_size_hint=(1, None),
size_hint_y=None)
grid.bind(minimum_height=grid.setter("height"))
self.rv.layout_manager = grid
self.rv.viewclass = "Thumb"
self.rv.data = self.view_data
self.rv.add_widget(grid)
screen.add_widget(self.rv)
btn = MDFabButton(icon="plus", on_release=self.copy_add)
screen.add_widget(btn)
return screen
def copy_add(self, instance):
for each in ['img.jpg']:
self.view_data.append({"source": each})
self.rv.data = self.view_data
if __name__ == '__main__':
TestApp().run()Logs
Traceback (most recent call last):
File "/home/fabian/Documents/Laner/mobile/test.py", line 48, in <module>
TestApp().run()
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/app.py", line 956, in run
runTouchApp()
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/base.py", line 574, in runTouchApp
EventLoop.mainloop()
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/base.py", line 339, in mainloop
self.idle()
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/base.py", line 391, in idle
Clock.tick_draw()
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/clock.py", line 783, in tick_draw
self._process_events_before_frame()
File "kivy/_clock.pyx", line 662, in kivy._clock.CyClockBase._process_events_before_frame
File "kivy/_clock.pyx", line 708, in kivy._clock.CyClockBase._process_events_before_frame
File "kivy/_clock.pyx", line 704, in kivy._clock.CyClockBase._process_events_before_frame
File "kivy/_clock.pyx", line 218, in kivy._clock.ClockEvent.tick
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/uix/recycleview/__init__.py", line 352, in refresh_views
lm.set_visible_views(indices, data, viewport)
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/uix/recyclelayout.py", line 396, in set_visible_views
add(widget)
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/uix/layout.py", line 97, in add_widget
super(Layout, self).add_widget(widget, *args, **kwargs)
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/uix/widget.py", line 664, in add_widget
widget.parent = parent = self
^^^^^^^^^^^^^
File "kivy/properties.pyx", line 520, in kivy.properties.Property.__set__
File "kivy/properties.pyx", line 567, in kivy.properties.Property.set
File "kivy/properties.pyx", line 606, in kivy.properties.Property._dispatch
File "kivy/_event.pyx", line 1307, in kivy._event.EventObservers.dispatch
File "kivy/_event.pyx", line 1189, in kivy._event.EventObservers._dispatch
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/lang/builder.py", line 177, in update_intermediates
fn(args, None, None)
File "/home/fabian/Documents/Laner/mobile/venv/lib/python3.12/site-packages/kivy/lang/builder.py", line 69, in call_fn
e_value = eval(value, idmap)
^^^^^^^^^^^^^^^^^^
File "<string>", line 66, in <module>
AttributeError: 'MDRecycleGridLayout' object has no attribute 'icon_active'Edit
I create, inherited and added the property's to Stop the Bug
class MyMDRecycleGridLayout(MDRecycleGridLayout):
icon_active = StringProperty()
icon_inactive_color = StringProperty()
def __init__(self, **kwargs):
super().__init__(**kwargs)Versions
- OS: Linux mint
- Python: Python 3.12.3
- Kivy: 2.3.1
- KivyMD: 2.0.1.dev0
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels