背景按钮颜色不会改变 on_press
Posted
技术标签:
【中文标题】背景按钮颜色不会改变 on_press【英文标题】:Background Button Color Doesn't Change on_press 【发布时间】:2020-03-10 17:30:24 【问题描述】:我试图让这个简单的脚本在使用 on_press 行为按下时更改按钮的颜色。
Python 脚本:kivytest.py
#Import Libraries
#Import Kivy GUI
import kivy
#From kivy, import base class App
# app: always refers to instance of this application
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.stacklayout import StackLayout
################################################################################
# Creating the root widget used in the .kv file
class testLayout(StackLayout):
pass
################################################################################
class kivytestApp(App):
def build(self):
return testLayout()
test = kivytestApp()
test.run()
对应的.kv文件:kivytest.kv
<StackLayout>:
#Create the canvas
canvas:
#Color the canvas background a dark gray with alpha = 1
Color:
rgba: 0.11, 0.15, 0.17, 1
Rectangle:
pos: self.pos
size: self.size
#Provide the orientation of the stack layout from left to right / top to bottom
orientation: "lr-tb"
#Add padding between children and layout
padding: 10
#Add spacing between each of its children
spacing: 5
Button:
size_hint: 0.2, None
text: "second button"
background_color: [1, 0, 0, 1]
background_normal: ''
on_press:
background_color: [0, 1, 0, 1]
print("second button pressed")
不幸的是,当我按下应用程序中的按钮时,颜色仍然是红色,但 on_press 上的红色稍微深一些,而不是我指定的绿色。我应该纠正什么?这个实现不是看起来那么简单吗?
【问题讨论】:
【参考方案1】:您有 2 个错误:
通过仅指示 background_color,您正在创建一个不同于 Button 的 background_color 属性的变量。要引用具有范围的同一对象,您必须使用 self
。
你不应该在事件中的赋值中使用:
,而是=
(我认为这是一个错误,kivy在这种情况下不会抛出错误)
综合以上情况,解决办法是:
on_press:
self.background_color = [0, 1, 0, 1]
print("second button pressed")
【讨论】:
这行得通。谢谢你的帮助,我不知道第二个错误。我遇到的大多数教程都教使用冒号而不是等号。如果您有任何好的 kivy 资源可以指导我,我很乐意阅读或研究它们。 @Xonu 注意它的使用位置,在 on_X 中你应该使用 python 代码而不是 kivy 代码。不幸的是,我提出的唯一建议是查看文档,因为我不使用其他资源。以上是关于背景按钮颜色不会改变 on_press的主要内容,如果未能解决你的问题,请参考以下文章