2013-09-07 3 views
-2

У меня проблемы с моей IF-операцией, так или иначе я получаю индексную ошибку. Я смотрю вокруг, и я не могу найти ответ на мою проблему. При перемещении ее влево программы просто падает, не знаю почему ..IF-инструкция в Python получает ошибку индекса

import Image 
import ImageTk 
import Tkinter 

#Image list code, this is the image list and the text that goes to each image. 

image_list = ['signori.png', 'nesta.png', 'marchegiani.png', 'piola.png'] 
text_list = ['En stor lazio legend och målskytt gjorde över 100mål för lazio', 'Lazios största kapten genom tiderna vann 7 titlar med klubbe ', 'Lazios störta målvakt genom tiderna otroligt älskad','Lazios störta målskytt genom tiderna och italienska ligans bästa målskytt någonsin'] 
current = 0 


#Code for moving the of pictures 
def move(delta): 
    global current, image_list 
    if not (0 <= current + delta < len(image_list)): 
     current += delta 
     image = Image.open(image_list[current]) 
     photo = ImageTk.PhotoImage(image) 
     label['text'] = text_list[current] 
     label['image'] = photo 
     label.photo = photo 


root = Tkinter.Tk() 

#Min kod för alla labels i applikationen, samt knappar och övriga GUI 
label = Tkinter.Label(root, compound=Tkinter.TOP) 
label.pack() 

frame = Tkinter.Frame(root) 
frame.pack() 

Tkinter.Button(frame, text='Previous picture', command=lambda: move(-1)).pack(side=Tkinter.LEFT) 
Tkinter.Button(frame, text='Next picture', command=lambda: move(+1)).pack(side=Tkinter.RIGHT) 
Tkinter.Button(frame, text='Quit', command=root.quit).pack(side=Tkinter.RIGHT) 

move(0) 

root.mainloop() 
+1

Вы можете показать свой полный отслеживающий? –

ответ

0

Изменить

if not (0 <= current + delta < len(image_list)): 

в

if 0 <= current + delta < len(image_list): 
+0

Так что бы объяснить «IndexError»? – SterlinkArcher

+0

В основном вы не изменяете цель этого условия. Вы хотите убедиться, что недопустимый индекс не должен использоваться. Но, используя нет, вы допускаете недопустимые индексы. – thefourtheye