我的应用程序有一个带有默认背景色的按钮。我只想在on_press事件中将其背景颜色更改为另一种颜色。您可能认为它类似于html的已访问和未访问超链接,即,单击链接时,它会更改其颜色。
我的尝试:
#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')
from random import random
from random import choice
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.properties import StringProperty
Builder.load_string("""
<Highest>:
GridLayout:
cols: 1
Button:
text: "Hi"
on_press: root.new()
""")
class Highest(Screen):
def new(self):
self.background_color=(1.0, 0.0, 0.0, 1.0)
# Create the screen manager
sm = ScreenManager()
sm.add_widget(Highest(name='Highest'))
class TestApp(App):
def build(self):
return sm
if __name__ == '__main__':
TestApp().run()
Run Code Online (Sandbox Code Playgroud)
但是on_press没有任何反应
@inclement
实际上,我试图将问题最小化。
我真正需要的是根据变量在不同条件下提供不同的颜色
class Highest(Screen):
def new(self):
if(a==5):
self.background_color=(1.0, 0.0, 0.0, 1.0)
else:
self.background_color=(1.0, 1.0, 1.0, 1.0)
Run Code Online (Sandbox Code Playgroud)
所以我想让我的班级最高的学习投入。请指导。提前致谢。
但是on_press没有任何反应
实际上,您设置了Highest实例的background_color属性-但是您看不到任何事情发生,因为它不使用background_color做任何事情。
您可以改为:
on_press: self.background_color = (1.0, 0.0, 0.0, 1.0)
Run Code Online (Sandbox Code Playgroud)
通过将其放入“按钮”规则中,self可以引用您实际要更改的按钮实例。
小智 1
如果您想将其保留在函数中,您还可以向按钮添加一个 id,然后从最高实例更改它。
Builder.load_string("""
<Highest>:
GridLayout:
cols: 1
Button:
id: button_one
text: "Hi"
on_press: root.new()
""")
Run Code Online (Sandbox Code Playgroud)
然后你可以引用id来改变颜色......
class Highest(Screen):
def new(self):
self.ids['button_one'].background_color = 1.0, 0.0, 0.0, 1.0
Run Code Online (Sandbox Code Playgroud)