如何在按下 KivyMD 快速拨号按钮时触发功能?

How to trigger a function when KivyMD Speed Dial Button pressed?

我正在尝试在按下 KivyMD Speed Dial 上的按钮时触发一个功能。 我目前正在使用来自 .kv 代码的回调,如下所示:

MDFloatingActionButtonSpeedDial:
        bg_hint_color: app.theme_cls.primary_light
        data: app.data
        root_button_anim: True
        callback: app.btn

然后调用 python 代码:

#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")

我输入参数 button 以获取按钮的名称,因此我将其放入 if 语句中以查看到目前为止它是否一切正常但未打印文本。正在打印按钮,所以这就是为什么我把它放在 if 语句中 put text is not being printed 所以我真的不知道这里发生了什么。 希望社区能提供帮助。

isinstance 检查对象属于哪个 class。

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()