Focus#

Changing the background color when the mouse is on the widget.

To apply focus behavior, you must create a new class that is inherited from the widget to which you apply the behavior and from the FocusBehavior class.

Usage#

from kivy.lang import Builder

from kivymd.app import MDApp
from kivymd.uix.behaviors import RectangularElevationBehavior, FocusBehavior
from kivymd.uix.boxlayout import MDBoxLayout

KV = '''
MDScreen:
    md_bg_color: 1, 1, 1, 1

    FocusWidget:
        size_hint: .5, .3
        pos_hint: {"center_x": .5, "center_y": .5}
        md_bg_color: app.theme_cls.bg_light

        MDLabel:
            text: "Label"
            theme_text_color: "Primary"
            pos_hint: {"center_y": .5}
            halign: "center"
'''


class FocusWidget(MDBoxLayout, RectangularElevationBehavior, FocusBehavior):
    pass


class Test(MDApp):
    def build(self):
        self.theme_cls.theme_style = "Dark"
        return Builder.load_string(KV)


Test().run()
https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/focus-widget.gif

Color change at focus/defocus

FocusWidget:
    focus_color: 1, 0, 1, 1
    unfocus_color: 0, 0, 1, 1
https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/focus-defocus-color.gif

API - kivymd.uix.behaviors.focus_behavior#

class kivymd.uix.behaviors.focus_behavior.FocusBehavior(**kwargs)#
Events:

on_enter

Called when mouse enters the bbox of the widget AND the widget is visible

on_leave

Called when the mouse exits the widget AND the widget is visible

focus_behavior#

Using focus when hovering over a widget.

focus_behavior is a BooleanProperty and defaults to False.

focus_color#

The color of the widget when the mouse enters the bbox of the widget.

focus_color is a ColorProperty and defaults to None.

unfocus_color#

The color of the widget when the mouse exits the bbox widget.

unfocus_color is a ColorProperty and defaults to None.

on_enter(self)#

Called when mouse enter the bbox of the widget.

on_leave(self)#

Called when the mouse exit the widget.