用户点击 MDIcon 时的绑定功能
Bind function on user click on MDIcon
我认为这是一个简单的问题,但我在 doc 或 Whosebug 帖子上没有找到正确的函数。
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()
我想出了一个解决方案(不漂亮但很管用)。
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()
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()
我认为这是一个简单的问题,但我在 doc 或 Whosebug 帖子上没有找到正确的函数。
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()
我想出了一个解决方案(不漂亮但很管用)。
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()
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()