我正在关注这本kivy书,虽然我可以理解如何更改按钮的背景颜色,但我还没有找到关键字来更改文本颜色.
#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')
from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.graphics import Color, Ellipse, Rectangle
class MinimalApp(App):
title = 'My App'
def build(self):
root = RootLayout()
return(root)
class RootLayout(GridLayout):
pass
if __name__ == '__main__':
MinimalApp().run()
Run Code Online (Sandbox Code Playgroud)
#:kivy 1.7.2
#:import kivy kivy
<RootLayout>:
rows: 1
Label:
text: "Why does this not work?"
# rgba: 1,0,1,1 # doesn't work
# Color: # doesn't …Run Code Online (Sandbox Code Playgroud) 这与另一个问题非常相关.唯一的区别是我是动态添加Ellipse with self.canvas而不是使用Builder(Builder.load_string或Builder.load_file).因此,这里的代码,做工作.当您单击椭圆时,它会移动并更改颜色:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.properties import NumericProperty
from kivy.graphics import Color, Ellipse
Builder.load_string("""
<CircleWidget>:
canvas:
Color:
rgba: self.r,1,1,1
Ellipse:
pos: self.pos
size: self.size
""")
class CircleWidget(Widget):
r = NumericProperty(0)
def __init__(s, **kwargs):
s.size= [50,50]
s.pos = [100,50]
super(CircleWidget, s).__init__(**kwargs)
def on_touch_down(s, touch):
if s.collide_point(touch.x,touch.y):
s.pos = [s.pos[1],s.pos[0]] # this works
s.r = 1.0 # this also works
class TestApp(App): …Run Code Online (Sandbox Code Playgroud)