【问题标题】:Kivy : line color in canvas won't updateKivy:画布中的线条颜色不会更新
【发布时间】:2015-07-10 07:04:43
【问题描述】:

我在画布中设置线条的颜色时遇到了一些问题。

我已将画布中矩形线条的颜色链接到一个属性,但奇怪的是,它似乎没有正确更新。通常矩形应该是红色或根本不可见,但这里总是白色的。

这是我的示例 kv 文件:

#:kivy 1.0.9

<Drawable>:
    rectangleColor: 1,0,0,1 if self.visible else 0,0,0,0
    canvas:
        Color:
            rgba: self.rectangleColor
        Line:
            rectangle: self.x+0.25*self.width, self.y+0.25*self.height, 0.5*self.width, 0.5*self.height

这里是对应的python文件:

#!/usr/bin/env python3

# Kivy raw imports
from kivy.uix.widget import Widget
from kivy.properties import NumericProperty, ReferenceListProperty,\
        BooleanProperty, ListProperty

class Drawable(Widget):
    visible = BooleanProperty(False)
    rectangleColor = ListProperty([])

    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos):
            print("touch down")
            self.visible = True
            return True
        return super().on_touch_down(touch)

    def on_touch_up(self, touch):
        print("touch up\n")
        self.visible = False
        return super().on_touch_up(touch)

if __name__ == "__main__":

    from kivy.app import App
    class drawableApp(App):
        def build(self):
            return Drawable()
    drawableApp().run()

你知道我做错了什么吗?

【问题讨论】:

    标签: python user-interface canvas kivy


    【解决方案1】:

    使用括号。

    <Drawable>:
        rectangleColor: (1,0,0,1) if self.visible else (0,0,0,0)
    

    【讨论】:

    • 谢谢,root 没有改变任何东西,但括号改变了!
    • 编辑一经验证,我将验证答案。谢谢@kiok46
    • 是的,经过验证,root 没有改变任何东西,因为这里的 root 和 self 是相同的,但无论如何这也已更正
    • 是的!对root 和self 在这里是一样的,我很乐意提供帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多