Функция выдает одно и то же значение (python)

При вызове функции несколько раз в while True выдает одно и то же значение. код:

# инициализация pygame и вызов дисплея

r = 0
g = 0
b = 0
move = 0
color = 0


def slider(line_y):
    global move
    global color
    if pygame.mouse.get_pressed()[0] != 0:
        if pygame.mouse.get_pos()[1] < line_y + 25:
            if pygame.mouse.get_pos()[1] > line_y + 25 - 25:
                move = pygame.mouse.get_pos()[0]

    if move < 50:
        move = 50
    if move > 560:
        move = 550

    pygame.draw.rect(display, (0, 0, 0), (50, line_y, 510, 8))
    pygame.draw.rect(display, (0, 0, 0), (move, line_y - 13, 20, 34))

    color = move / 2
    color = color - 25
    round(color)

    return color

while True:
    display.fill((r, g, b))
    b = slider(525)
    g = slider(475)
    r = slider(425)

    #обновление экрана

Ответы (1 шт):

Автор решения: Danis

проблема в том, что вы используете одно и тоже значение для всех ползунок. Передавайте ползункам их текущие значение.

r = 0
g = 0
b = 0

def slider(line_y, move):
    if pygame.mouse.get_pressed()[0] != 0:
        if pygame.mouse.get_pos()[1] < line_y + 25:
            if pygame.mouse.get_pos()[1] > line_y + 25 - 25:
                move = pygame.mouse.get_pos()[0]

    if move < 50:
        move = 50
    if move > 550:
        move = 550

    pygame.draw.rect(display, (0, 0, 0), (50, line_y, 510, 8))
    pygame.draw.rect(display, (0, 0, 0), (move, line_y - 13, 20, 34))

    color = round(move / 2 - 25)

    return color

while True:
    display.fill((r, g, b))
    b = slider(525, b * 2 + 50)
    g = slider(475, g * 2 + 50)
    r = slider(425, r * 2 + 50)
    
    #обновление экрана

Но лучше реализовать класс, в котором будут храниться все значения

→ Ссылка