0

I think it's a simple problem but I didn't found the right function on the doc or on stackoverflow posts.

from kivymd.app import MDApp
from kivy.lang import Builder

KV = '''
BoxLayout:
    MDIcon:
        halign: "center"
        icon: "language-python"
'''

class TestApp(MDApp):

    def build(self):
        return Builder.load_string(KV)

    def on_icon_click(self, widget):
        print("someone clicked on me")

if __name__ == '__main__':
    TestApp().run()
Konrad Rudolph
  • 530,221
  • 131
  • 937
  • 1,214

2 Answers2

0

I figured out a solution (not beautiful but it works).

from kivymd.app import MDApp
from kivy.lang import Builder
from kivymd.uix.label import MDIcon
from kivy.uix.behaviors import ButtonBehavior

class ClickableMDIcon(ButtonBehavior, MDIcon):
    pass

KV = '''
BoxLayout:
    ClickableMDIcon:
        halign: "center"
        icon: "language-python"
'''

class TestApp(MDApp):
    def build(self):
        box = Builder.load_string(KV)
        box.children[0].bind(on_touch_down = lambda widget, touch: self.on_icon_click())
        return box

    def on_icon_click(self):
        print("someone clicked on me")

if __name__ == '__main__':
    TestApp().run()
0
from kivymd.app import MDApp
from kivy.lang import Builder

KV = '''
BoxLayout:
    MDIconButton:
        halign: "center"
        icon: "language-python"
        on_press: app.on_icon_click()
'''

class TestApp(MDApp):

    def build(self):
        return Builder.load_string(KV)

    def on_icon_click(self):
        print("someone clicked on me")

if __name__ == '__main__':
    TestApp().run()
Ankit Sangwan
  • 1,138
  • 1
  • 7
  • 20