You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy问题:如何为继承自FloatLayout的浮动按钮添加on_release方法?

解决FloatButton无法绑定on_release的问题

问题根源

你猜的没错,FloatLayout本身没有on_release事件,直接给FloatButton绑定该事件会触发AttributeError。你的FloatButton是用FloatLayout包裹了一个可点击的Button,真正能响应点击动作的是内部的这个Button,需要把点击事件从内部按钮传递到外部的FloatButton上。

方案一:修改FloatButton继承自Button(更简洁)

直接让FloatButton继承Button,天然支持on_release事件,同时保留椭圆样式:

<FloatButton@Button>:
    text: ''
    btn_size: (70, 70)
    size_hint: (None, None)
    size: self.btn_size
    background_normal: ''
    background_color: (0, 0, 0, 0)
    
    canvas.before:
        Color:
            rgba: (0.404, 0.227, 0.718, 1.0)
        Ellipse:
            size: self.size
            pos: self.pos

在MainWindow中直接绑定on_release即可正常工作:

<MainWindow>:
    name: 'main'

    # ... 其他布局代码 ...

    FloatButton:
        id: addButton
        text: '+'
        markup: True
        pos_hint: {"x":.5,"top":.5}
        on_release:
            print("[TEST] on_release works!")

方案二:保留FloatLayout,传递内部按钮的点击事件

如果必须保留FloatLayout作为基类,需要在内部Button的on_release中触发FloatButton的自定义事件:

修改FloatButton的kv定义

<FloatButton@FloatLayout>:
    id: float_add_button
    size_hint: (None, None)
    text: ''
    btn_size: (70, 70)
    size: (70, 70)
    bg_color: (0.404, 0.227, 0.718, 1.0)
    
    # 声明自定义on_release事件
    on_release: pass

    Button:
        text: float_add_button.text
        markup: True
        font_size: 40
        size_hint: (None, None)
        size: float_add_button.btn_size
        pos_hint: {'x': .5, 'y': .8} 
        background_normal: ''
        background_color: (0, 0, 0, 0)
        canvas.before:
            Color:
                rgba: (0.404, 0.227, 0.718, 1.0)
            Ellipse:
                size: self.size
                pos: self.pos
        # 内部按钮点击时,触发外部FloatButton的on_release事件
        on_release: float_add_button.dispatch('on_release')

修改后,你原本在MainWindow中绑定的on_release逻辑会被正常触发。

验证效果

两种方案都能解决AttributeError: release的问题,运行后点击按钮会输出[TEST] on_release works!。

内容的提问来源于stack exchange,提问作者gitcanzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:07:06