每次按下按钮时更改按钮颜色 kivy

卡勒姆

我希望我的按钮在按下时从蓝色变为绿色。如果再次按下它,我希望它从绿色变回蓝色。我知道如何在按下按钮时更改按钮的颜色,但如果再次按下按钮,我不知道如何将该颜色更改回原始颜色。

kv文件:

<Type>:
    name: "type"
        RoundedButton:
            size_hint: 0.417, 0.15625
            pos_hint: {"x": 0.0556, "y": 0.15}
            on_press: root.change_color()
            Image:
                source: 'Job.PNG'
                size: self.parent.width, .85 * self.parent.height
                pos: self.parent.x, self.parent.y + 5
                stretch: True
                keep_ratio: False

<RoundedButton@Button>:
    background_normal: ""
    background_color: 0, 0, 0, 0
    back_color: 0.2,0.6,1,1
    border_radius: 10
    color: self.back_color
    bold: True
    canvas.before:
        Color:
            rgba: self.back_color
        Line:
            rounded_rectangle: self.x, self.y, self.width, self.height, self.border_radius
            width: 

蟒蛇文件:

class Type(Screen):
    back_color = ObjectProperty()
    def change_color(self):
        if self.back_color == (0.2,0.6,1,1):
            self.back_color = (0, 1, 0, 1)
        else:
            self.back_color = (0.2,0.6,1,1)

我认为我在 py 文件中的逻辑会检查颜色是否为蓝色 (0.2,0.6,1,1),即没有按下,它会变成绿色,如果它不是蓝色(所以必须是绿色,它会变成蓝色。但是当我按下按钮时没有任何反应,没有错误,只是没有变成绿色。

约翰·安德森

几个问题。

首先,你的change_color()方法试图改变back_color你的Type实例,但你的RoundedButton规则引用back_color您的RoundedButton实例(而不是一个在Type)。因此,该方法所做的任何更改都不会影响RoundedButton.

二、if声明:

if self.back_color == (0.2,0.6,1,1):

永远不会是真的。部分是因为第一个问题,但也需要进行比较:

if self.back_color == [0.2,0.6,1,1]:

我不确定为什么会这样。

我认为解决第一个问题的最简单方法是idRoundedButton

<Type>:
    name: "type"
    RoundedButton:
        id: butt
        size_hint: 0.417, 0.15625
        pos_hint: {"x": 0.0556, "y": 0.15}
        on_press: root.change_color()

然后修改change_color()方法为:

class Type(Screen):
    def change_color(self):
        if self.ids.butt.back_color == [0.2,0.6,1,1]:
            self.ids.butt.back_color = (0, 1, 0, 1)
        else:
            self.ids.butt.back_color = (0.2,0.6,1,1)

请注意,back_color ObjectProperty不需要。

如果您希望RoundedButtons独立更改颜色,您可以将您定义RoundedButton为:

class RoundedButton(Button):
    back_color = ListProperty()

    def change_color(self):
        if self.back_color == [0.2,0.6,1,1]:
            self.back_color = [0, 1, 0, 1]
        else:
            self.back_color = [0.2,0.6,1,1]

在你的kv文件中:

<Type>:
    name: "type"
    RoundedButton:
        size_hint: 0.417, 0.15625
        pos_hint: {"x": 0.0556, "y": 0.15}
        Image:
            source: 'Job.PNG'
            size: self.parent.width, .85 * self.parent.height
            pos: self.parent.x, self.parent.y + 5
            stretch: True
            keep_ratio: False
    RoundedButton:
        size_hint: 0.417, 0.15625
        pos_hint: {"right": 1, "top": 1}
        Image:
            source: 'Job.PNG'
            size: self.parent.width, .85 * self.parent.height
            pos: self.parent.x, self.parent.y + 5
            stretch: True
            keep_ratio: False

<RoundedButton>:
    background_normal: ""
    background_color: 0, 0, 0, 0
    back_color: 0.2,0.6,1,1
    border_radius: 10
    color: self.back_color
    bold: True
    on_press: self.change_color()
    canvas.before:
        Color:
            rgba: self.back_color
        Line:
            rounded_rectangle: self.x, self.y, self.width, self.height, self.border_radius

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Kivy-按下按钮即可更改按钮颜色

每次在Kivy中按下此特定按钮时,我都需要更改随机数

在Kivy for Python中按下按钮时更新标签的文本

在Kivy中更改按钮的背景颜色

Kivy Mapview:区分按下的按钮

按下按钮时将动态创建的按钮信息传递给函数。kivymd, kivy, 蟒蛇

在 python 中创建标签并在 kivy 设置中按下按钮后为其添加背景颜色

按下按钮时生成的 Kivy 三个按钮。按下新按钮之一应删除所有 3 个新按钮

如何在 Kivy 中按下按钮来更改变量的值

使用 Kivy 屏幕,如何根据屏幕 1 上按下按钮的文本更改屏幕 2 的标签?

按下按钮时更改文本的颜色?

按钮按下时前景颜色更改

如何在kivy中按下按钮时播放的动画gif?

按下按钮时将 var +1 添加到标签(kivy)

当我在 kivy(python) 中按下按钮时如何打开 MDCard?

Kivy 计算按下“计数器”按钮时打开的 ToggleButtons 的数量

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

Kivy自定义按钮on_press更改画布颜色

如何在kivy中更改gridLayout中特定按钮的颜色

按下 kivy 按钮可转到多个屏幕之一

如何获取kivy中按下的按钮的ID?

用tkinter按下按钮时如何更改按钮的颜色?

尝试添加一个按钮,该按钮在每次按下导航栏时都会更改背景颜色

按钮背景的十六进制颜色 - Kivy

在kivy中单击时如何更改按钮的背景图像?

更改弹出 Kivy 的颜色

更改Kivy滑块颜色

按钮的绑定方法 - Kivy

Kivy 按钮设置