Le code que je viens d'écrire est utilisé de sorte qu'il ajuste la valeur de chaque élément dans une liste chaque fois que l'utilisateur final défile, de sorte que essentiellement la valeur de chaque élément correspond à la coordonnée y de son objet correspondant lorsqu'il est appliqué sur la surface. La logique derrière mon code cherche à savoir si la différence entre la coordonnée y originale et la nouvelle coordonnée y d'un objet lors du défilement reste la même, sinon il faut passer à la boucle for
, sinon déplacer le code suivant l'instruction if
.Python - if instruction retournant Vrai quand je ne le veux pas
Pour une raison quelconque, l'instruction if
renverra toujours True
même s'il n'y a pas de différence entre les deux variables de contrôle que j'utilise. Je ne suis pas sûr si je néglige quelque chose de subtil ce qui signifie qu'il va continuer à retourner True
ou ma logique n'a tout simplement pas fonctionné comme je l'attendais; mon pari est sur ce dernier.
#example y values in list
yIndex = [122, 152, 212, 242]
scroll_y = 63 #initial y scroll coordinate
originalScroll_y = 63
while True:
for event in pygame.event.get():
#code checking whether user has scrolled
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 4 and scroll_y != 63:
originalScroll_y = scroll_y
scroll_y = min(scroll_y + 15, 63)
if event.button == 5:
originalScroll_y = scroll_y
scroll_y = max(scroll_y - 15, finalY + 470)
elif event.type == MOUSEBUTTONUP and event.button == 1 and isinstance(page, MainPage):
x, y = pygame.mouse.get_pos()
control = originalScroll_y - scroll_y
control2 = 0
#e.g. if control = 15 and control2 = 15, it returns True instead
#of False
if control != control2:
for k, j in enumerate(yIndex):
j -= control
yIndex[k] = j
control2 = control
for i in yIndex:
if y >= (i - 10) and y <= (i + 20):
if i in indexedContacts:
buttonSound.play()
sleep(0.5)
scroll_y = 63
page = EditPage()
page.style()
page.contactFields()
break
Pourriez-vous s'il vous plaît réduire cela à un [exemple minimal] (http://stackoverflow.com/help/mcve) et être plus clair sur la source présumée du problème? – jonrsharpe
'control2' est toujours zéro à cette instruction' if' - il est mis à zéro quelques lignes plus tôt. – DNA