【问题标题】:How to make custom buttons in Kivy with the KV Language?如何使用 KV 语言在 Kivy 中制作自定义按钮?
【发布时间】:2019-01-21 04:36:49
【问题描述】:

我正在尝试使用自定义精灵来制作自定义按钮。我知道如何在 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()

但这只是显示一个普通按钮。有什么帮助吗?

【问题讨论】:

  • 来源是什么?你想让它成为图片的背景吗?
  • 你可以发布 .kv 来翻译成 .py
  • 不,我不想让精灵成为按钮本身。就像认为有一个 16x16 的卡通树图像。当我按下它时,它就像一个按钮并调用绑定到它的函数。我想要一个没有 KV 的 Python 答案 -> PY 翻译
  • 是您的代码建议您基于 .kv 代码,因为 source 是 Image 的属性而不是 Button 的属性,我建议进行翻译,以便您了解对应关系并可以使用其他代码,因为视图是在 .kv 中创建的

标签: python button kivy kivy-language


【解决方案1】:

据我了解,您需要一个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()  

【讨论】:

  • TypeError: __init__ takes no parameters
  • @shamilpython 您是只使用我的代码还是将其改编为其他代码?
  • @shamilpython 我没有调用构造函数,因为没有必要因为这个原因我使用pass
  • 糟糕,抱歉,忘记删除 text = 'Hello',已修复。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多