python 如何使用kivymd FloatingActionButtonSpeedDial访问按下的堆栈项?

km0tfn4u  于 2023-03-16  发布在  Python
关注(0)|答案(1)|浏览(126)

我想使用KivyMDs的FloatingActionButtonSpeedDial,根据按下的堆栈按钮,会发生一些不同的事情。现在,我只是尝试打印按下的按钮。
我从教程中找到了过时的信息,但看起来当前设置按钮功能的方法是:

on_press_stack_button: root.callback(self)

那么在我的.py文件中

def callback(self, instance):
    print(instance.icon)

但无论我选择哪个堆栈图标,打印的结果总是“plus”(根图标)
我猜这是因为我将self传递给回调函数,但是我还应该传递什么来访问实际单击的按钮呢?我在文档中找不到任何示例,而我找到的所有教程都说要使用
“”“回调:回调“”“而不是on_press_stack_button:
但是使用回调函数根本不打印任何东西。
任何帮助是非常感谢!

2uluyalo

2uluyalo1#

我也很好奇这个问题,所以我自己开发了一个方法。你可以使用这段代码,因为按钮的数量不能太多,而且我们已经为每个按钮分配了不同的函数:

def callback(self, instance):
    self.speed_dial_buttons = [button for button in instance.children if isinstance(button, MDFloatingBottomButton)]
    if self.speed_dial_buttons[0] and self.speed_dial_buttons[1] is not None:
            first_button = self.speed_dial_buttons[0]
            second_button = self.speed_dial_buttons[1]
            first_button.on_release = on_press_first_button
            second_button.on_release = on_press_second_button

相关问题