2014-07-15 2 views
-4

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 
+9

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

+4

'control2' est toujours zéro à cette instruction' if' - il est mis à zéro quelques lignes plus tôt. – DNA

Répondre

4

Vous avez un imbriqué instruction if si control2 est réglé sur 0

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 # set to 0 here 
     if control != control2: # is 0 here 

Control2 ne sera jamais 15 ou toute autre valeur que 0 en ce que si la déclaration.

+0

Ah, je pensais que c'était juste de la logique. Je vous remercie. – RoyalSwish

+0

Pas de problème, de rien. –

Questions connexes