Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用kivy从py文件更改小部件的颜色_Python_Kivy - Fatal编程技术网

Python 无法使用kivy从py文件更改小部件的颜色

Python 无法使用kivy从py文件更改小部件的颜色,python,kivy,Python,Kivy,我正在做一辆车,可以检测到“沙子”,并使用kivy变红。通过在画布上绘制并更新Sand变量来生成沙子。试过之后 with self.canvas: Color(1, 0, 0, 1) 及 它不会变红。我认为有一个简单的解决办法,但我不知道遗漏了什么。下面是具体代码 ''' <TriEllf>: canvas: PushMatrix Color: rgba: 99/255,209/255,62/255,1

我正在做一辆车,可以检测到“沙子”,并使用kivy变红。通过在画布上绘制并更新Sand变量来生成沙子。试过之后

with self.canvas:
    Color(1, 0, 0, 1)

它不会变红。我认为有一个简单的解决办法,但我不知道遗漏了什么。下面是具体代码

'''
<TriEllf>:
    canvas:
        PushMatrix
        Color:
            rgba: 99/255,209/255,62/255,1
        Rotate:
            angle: self.angle
            origin: self.center
        Ellipse:
            pos: self.center[0] - 6, self.center[1] + 36
            size: 12, 8
            angle_start: 270
            angle_end: 450
        Triangle:
            points: self.center[0]-6,self.center[1]+40, self.center[0]+6,self.center[1]+40, self.center[0],self.center[1]+10
        PopMatrix
'''
sand = np.zeros((width, height))

class TriEllf(Widget):
    angle = NumericProperty(0)
    rotation = NumericProperty(0)
    sensorf_x = NumericProperty(0)
    sensorf_y = NumericProperty(0)
    sensorf = ReferenceListProperty(sensorf_x, sensorf_y)
    signalf = NumericProperty(0)

    def move(self, rotation):
        self.pos = Vector(*self.sensorf) + self.pos
        self.sensorf = self.center[0], self.center[1] + 27
        self.rotation = rotation
        self.angle = self.angle + self.rotation
        self.sensorf = (Vector(*self.sensorf) - Vector(*self.center)).rotate(self.angle) + self.center
        self.signalf = int(np.sum(sand[int(self.sensorf_x) - 6:int(self.sensorf_x) + 6,
                                  int(self.sensorf_y) - 17:int(self.sensorf_y) + 26])) / 516
        if self.signalf:
            with self.canvas:
                Color(1, 0, 0, 1)
“”
:
画布:
推矩阵
颜色:
rgba:99/255209/255,62/255,1
轮换:
角度:self.angle
来源:自我中心
椭圆:
位置:自中心[0]-6,自中心[1]+36
尺码:12、8
起始角度:270
角_端:450
三角形:
点数:自中心[0]-6,自中心[1]+40,自中心[0]+6,自中心[1]+40,自中心[0],自中心[1]+10
流行音乐
'''
砂=np.零((宽度、高度))
类TriEllf(小部件):
角度=数值属性(0)
旋转=数值属性(0)
传感器F_x=数值属性(0)
传感器f_y=数值属性(0)
sensorf=ReferenceListProperty(传感器F_x,传感器F_y)
signalf=NumericProperty(0)
def移动(自、旋转):
self.pos=向量(*self.sensorf)+self.pos
自中心传感器F=自中心[0],自中心[1]+27
自转
自转角=自转角+自转角
self.sensorf=(向量(*self.sensorf)-向量(*self.center))。旋转(自角度)+自中心
self.signalf=int(np.sum)(sand[int(self.sensorf_x)-6:int(self.sensorf_x)+6,
int(self.sensorf_y)-17:int(self.sensorf_y)+26])/516
如果self.signalf:
使用self.canvas:
颜色(1,0,0,1)
'''
<TriEllf>:
    canvas:
        PushMatrix
        Color:
            rgba: 99/255,209/255,62/255,1
        Rotate:
            angle: self.angle
            origin: self.center
        Ellipse:
            pos: self.center[0] - 6, self.center[1] + 36
            size: 12, 8
            angle_start: 270
            angle_end: 450
        Triangle:
            points: self.center[0]-6,self.center[1]+40, self.center[0]+6,self.center[1]+40, self.center[0],self.center[1]+10
        PopMatrix
'''
sand = np.zeros((width, height))

class TriEllf(Widget):
    angle = NumericProperty(0)
    rotation = NumericProperty(0)
    sensorf_x = NumericProperty(0)
    sensorf_y = NumericProperty(0)
    sensorf = ReferenceListProperty(sensorf_x, sensorf_y)
    signalf = NumericProperty(0)

    def move(self, rotation):
        self.pos = Vector(*self.sensorf) + self.pos
        self.sensorf = self.center[0], self.center[1] + 27
        self.rotation = rotation
        self.angle = self.angle + self.rotation
        self.sensorf = (Vector(*self.sensorf) - Vector(*self.center)).rotate(self.angle) + self.center
        self.signalf = int(np.sum(sand[int(self.sensorf_x) - 6:int(self.sensorf_x) + 6,
                                  int(self.sensorf_y) - 17:int(self.sensorf_y) + 26])) / 516
        if self.signalf:
            with self.canvas:
                Color(1, 0, 0, 1)