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

Posted

技术标签:

【中文标题】Kivy - 按下后更改按钮的颜色?【英文标题】:Kivy - Change the color of a button after being pressed? 【发布时间】:2019-06-28 17:35:00 【问题描述】:

我的应用程序上有两个按钮,它们都是带有白色文本的紫色。按下按钮时,我希望颜色变为深紫色。显然,我缺少一些简单的东西,因为我的代码不像我期望的那样工作。

       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")  

【问题讨论】:

按钮颜色是否正确?因为background_color_down 需要image resource。不知道他们对颜色有多挑剔!=图像。但情况可能并非如此。如果是这种情况,您可以执行btn1.bind(state=callback) 并在您的回调函数中处理这些事情。 How to change background color of button on press in kivy?的可能重复 您是否检查过其他问题的已接受答案?您是否收到错误消息? @Alex_P 我个人认为我的不一样,但我可能是错的。我试图单独在一个 kv 文件中实现这一点 @Torxed 在 kv 文件中没有实现此功能的功能吗?我认为这很简单,不需要任何 python 逻辑。但是是的,当它没有被按下时,它是正确的紫色。我只是想在单击时使其变暗,因为按下时,它是深蓝色 【参考方案1】:

就我个人而言,我最喜欢的做法是在 .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")

【讨论】:

附注为了使您的标签看起来更像按钮,您可以在文本下划线。为此,您需要将text 更改为text: [u]I am a LabelButton[/u],然后确保添加另一个属性markup: True 以使kivy 理解您的[u][/u] 标签。也适用于粗体 ([b] some text [/b]) 或斜体 ([i] some text [/i]) 再次感谢埃里克。你永远是一个帮助。也期待视频

以上是关于Kivy - 按下后更改按钮的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

按下后更改Touchable / Pressable Item的背景颜色

更改按钮文本和状态的颜色

Kivy 中的更改颜色按钮

如何更改 Kivy 中按钮的背景颜色?

如何在 Kivy 中动态更改标签背景颜色

在 Kivy 中更改颜色 TabbedPanelHeader