Функция выдает одно и то же значение (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)
#обновление экрана
Но лучше реализовать класс, в котором будут храниться все значения