I am trying to get a function to trigger when a button on The KivyMD Speed Dial is pressed. I am currently using a callback from the .kv code as seen here:
MDFloatingActionButtonSpeedDial:
bg_hint_color: app.theme_cls.primary_light
data: app.data
root_button_anim: True
callback: app.btn
This then call the python code:
#DATA FOR THE SPEED DIAL
data = {
'Create': 'file-document',
'Open': 'folder-open'
}
#FUNCTION HERE
def btn(self, button):
print(button)
if button =="<kivymd.uix.button.MDFloatingBottomButton object at 0x000001BBCAF5BA50>":
print("test")
I enter the argument button
to get the name of the button so I put that in a if
statement to see if it is all working so far but the text is not being printed. The button is being printed so that's why I put it in the if statement put text
is not being printed so I really don't know what is going on here.
Hope the community can help.
isinstance
checks which class the object belongs to.
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.button import MDFloatingBottomButton
KV = '''
MDScreen:
MDFloatingActionButtonSpeedDial:
data: app.data
root_button_anim: True
callback: app.callback
'''
class Example(MDApp):
data = {
'Create': 'file-document',
'Open': 'folder-open',
}
def build(self):
return Builder.load_string(KV)
def callback(self, instance):
print('callback')
icon = instance.icon
# if you want check button, use
if isinstance(instance, MDFloatingBottomButton):
if icon == 'file-document':
print('Read file')
elif icon == 'folder-open':
print('Open folder')
Example().run()