And*_*rey 2 python canvas colors kivy
目的是当用户按下按钮时改变kivy中笔的颜色。颜色将更改为按钮的背景颜色。画布代码:
def on_touch_move(self,color,touch):
with self.pc.canvas:
global wtd,pencolor
Color(pencolor)
if wtd == 1:
Ellipse(pos=(touch.x,touch.y),size=(penrad,penrad))
Run Code Online (Sandbox Code Playgroud)
绑定到按钮的 on_press 代码:
def newclr(self,instance):
global pencolor
pencolor = instance.background_color
self.on_touch_move
return pencolor
Run Code Online (Sandbox Code Playgroud)
按钮事件正常工作!
提供颜色的模式(rgb、rgba)。将颜色(pencolor)替换为颜色(rgba=pencolor)
详细请参考下面的演示。笔的颜色开始为红色,然后变为白色,即按钮的背景颜色。
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ListProperty, NumericProperty
from kivy.graphics import *
class MyWidget(Widget):
wtd = NumericProperty(1)
penrad = NumericProperty(10)
pencolor = ListProperty([1, 0, 0, 1]) # Red
def newclr(self, instance):
print("Before Change@newclr: pencolor=", self.pencolor)
self.pencolor = instance.background_color
print("After Change@newclr: pencolor=", self.pencolor)
def on_touch_move(self, touch):
print("on_touch_move: touch=", touch)
print("on_touch_move: pencolor=", self.pencolor)
with self.canvas:
Color(rgba=self.pencolor)
if self.wtd == 1:
Ellipse(pos=(touch.x, touch.y), size=(self.penrad, self.penrad))
class TestApp(App):
title = "Kivy - Change Pen Colour"
def build(self):
return MyWidget()
if __name__ == "__main__":
TestApp().run()
Run Code Online (Sandbox Code Playgroud)
#:kivy 1.10.0
<CustomButton>:
<MyWidget>:
canvas.before:
Color:
rgba: 0, 0, 1, 1 # Blue
Rectangle:
pos: self.pos
size: self.size
Button:
text: "Change Pen Color"
size: 150, 100
size_hint: None, None
on_press: root.newclr(self)
Run Code Online (Sandbox Code Playgroud)