Question

I changed the color of the widget keeping the score of the pong game, but once I tap to start playing the game, the ball color and paddle color change as well. The ball and paddle start off as white and I want to keep them white.

#:kivy 1.8.0


<PongBall>:
    size: 30,30
    canvas:
        Ellipse:
            pos: self.pos
            size: self.size

<PongPaddle>:
    size: 100, 15
    canvas:
        Rectangle:
            pos: self.pos
            size: self.size


<PongGame>:
    ball: pong_ball
    player1: player_bottom
    test_text: test_text

    canvas:
        Color: 
            rgb: (1, 1, 1)
        Rectangle:
            pos: 0, self.height-30
            size: self.width, 30

    Label:
        font_size: 30
        center_x: 30
        top: root.top
        text: str(root.player1.score)
        color: 1,0,0,1

    Label:
        id: test_text
        font_size: 60
        center_x: root.width/2
        top:  root.top-(root.top - (root.top/2))/2
        text: 'Tap to Play!'

    PongBall:
        id: pong_ball
        center: self.parent.center

    PongPaddle:
        id: player_bottom
        x: root.center_x
        center_y: root.y+self.height
Was it helpful?

Solution

Label:
    font_size: 30
    center_x: 30
    top: root.top
    text: str(root.player1.score)
    color: 1,0,0,1

Move both label code to the bottom of your kv file and it should just change the score string color.

<PongBall>:
    size: 50, 50 
    canvas:
        Ellipse:
            pos: self.pos
            size: self.size          

<PongPaddle>:
    size: 25, 200
    canvas:
        Rectangle:
            pos:self.pos
            size:self.size
<PongGame>:
    ball: pong_ball
    player1: player_left
    player2: player_right
    canvas:
        Color:
            rgb: (1, 1, 1)
        Rectangle:
            pos: self.center_x-5, 0
            size: 20, self.height


    PongBall:
        id: pong_ball
        canvas.before:
            Color:
                rgb: (1, 0, 0) #red ball
        center: self.parent.center

    PongPaddle:
        id: player_left
        x: root.x
        canvas.before:
            Color:
                rgb: 1, 1, 0 # yellow paddle
        center_y: root.center_y

    PongPaddle:
        id: player_right
        x: root.width-self.width
        canvas.before:
            Color:
                rgb: 0, 1, 0 #green paddle
        center_y: root.center_y

    Label:
        font_size: 70
        center_x: root.width / 4
        top: root.top - 50
        text: str(root.player1.score)
        color: 0,0,1,1

    Label:
        font_size: 70
        center_x: root.width * 3 / 4
        top: root.top - 50
        text: str(root.player2.score)
        color: 0,0,1,1
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top