Kivy-按下按钮后更改按钮的颜色?

时间:2019-02-04 22:29:37

标签: python kivy

我的应用程序上有两个按钮,它们都是紫色的,带有白色文本。当按下按钮时,我希望颜色更改为深紫色。显然,我缺少一些简单的东西,因为我的代码无法正常运行。

       Button:
            background_normal: ''
            background_color: utils.get_color_from_hex("#752db5")
            text: 'Sign Up'
            size_hint: .3, .3
            padding: 3, 1
            font_name: 'Roboto-Medium'
            background_color_down: utils.get_color_from_hex("#5b238d")  

1 个答案:

答案 0 :(得分:0)

就我个人而言,执行此操作的最喜欢的方法是在.py文件中创建一个名为LabelButton的新类,并使其继承kivy的ButtonBehaviorLabel类。然后使用LabelButton的画布进行着色,并且由于继承了on_release,因此您仍然可以像使用任何普通按钮一样使用ButtonBehavior函数。

更改画布的背景颜色可以通过一个非常不错的技巧来完成。看看我的例子。

您的.py文件中的

包括以下代码:

from kivy.uix.button import ButtonBehavior
from kivy.uix.label import Label

class LabelButton(ButtonBehavior, Label):
    pass

然后在您的.kv文件中,您可以引用LabelButton类:

LabelButton:
    canvas:
        Color: 
            rgb: (1,0,0,1) if self.state == 'normal' else (0,1,0,1) # Color is red if button is not pressed, otherwise color is green
        RoundedRectangle:
            size: self.size
            pos: self.pos
            radius: 10,20,30,40 # Play with these if you want smooth corners for your button
    text: "I am a LabelButton"
    color: (0,0,1,1) # text color is blue
    on_release:
        print("I have been clicked")