如何使用 KV 语言在 Kivy 中制作自定义按钮?
How to make custom buttons in Kivy with the KV Language?
我正在尝试使用自定义精灵来制作自定义按钮。我知道如何用 KV 语言做到这一点,但我宁愿坚持使用 Python。
我看到为精灵设置一些源属性在 KV 语言中有效,所以我尝试了这个:
from kivy.app import App
from kivy.uix.button import Button
class RoundButton(Button):
def __init__(self, **kwargs):
Button.__init__(self, **kwargs)
self.source = '/home/shamildacoder/Pictures/Painting.png'
class TestApp(App):
def build(self):
return RoundButton(text='HELLO WORLD')
TestApp().run()
但这只是显示一个普通按钮。有帮助吗?
根据我的理解,您想要一个 Image
,您可以在其中处理 on_press
事件,因为它是 Behaviors
,如下所示:
from kivy.app import App
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import Image
class ImageButton(ButtonBehavior, Image):
pass
class MyApp(App):
def build(self):
return ImageButton(source="kivy.png", on_press=lambda *args: print("press"))
if __name__ == "__main__":
MyApp().run()
我正在尝试使用自定义精灵来制作自定义按钮。我知道如何用 KV 语言做到这一点,但我宁愿坚持使用 Python。
我看到为精灵设置一些源属性在 KV 语言中有效,所以我尝试了这个:
from kivy.app import App
from kivy.uix.button import Button
class RoundButton(Button):
def __init__(self, **kwargs):
Button.__init__(self, **kwargs)
self.source = '/home/shamildacoder/Pictures/Painting.png'
class TestApp(App):
def build(self):
return RoundButton(text='HELLO WORLD')
TestApp().run()
但这只是显示一个普通按钮。有帮助吗?
根据我的理解,您想要一个 Image
,您可以在其中处理 on_press
事件,因为它是 Behaviors
,如下所示:
from kivy.app import App
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import Image
class ImageButton(ButtonBehavior, Image):
pass
class MyApp(App):
def build(self):
return ImageButton(source="kivy.png", on_press=lambda *args: print("press"))
if __name__ == "__main__":
MyApp().run()