【问题标题】:How to change canvas color in kivy python dynamicly?如何动态更改kivy python中的画布颜色?
【发布时间】:2018-03-31 14:00:15
【问题描述】:

目的是在用户按下按钮时改变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))

on_press 绑定到按钮的代码:

def newclr(self,instance):
    global pencolor
    pencolor = instance.background_color
    self.on_touch_move
    return pencolor

按钮事件正常工作!

【问题讨论】:

    标签: python canvas colors kivy


    【解决方案1】:

    解决方案

    提供颜色的模式 (rgb, rgba)。将 Color(pencolor) 替换为 Color(rgba=pencolor)

    有关详细信息,请参阅下面的演示。笔的颜色从红色开始变为白色,即按钮的背景颜色。

    示例

    main.py

    ​​>
    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()
    

    test.kv

    #: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)
    

    输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多