Переключение в listbox
Делаю "читалку", хотел сделать более удобные переключатели глав, но не получилось, переключает одну, а потом всё сбивается, помогите пожалуйста, ошибки в функциях following и previous.
from tkinter import *
def df():
w = Toplevel()
w.geometry('240x420+1142+0')
w.title('Фигура')
#--------------------
f = Frame(w)
f2 = Frame(w)
global lb1
global rv
#---------------------
rv = IntVar()
rv.set(0)
r1 = Radiobutton(w, text = 'Белый фон', variable = rv, value = 0)
r2 = Radiobutton(w, text = 'Бежевый', variable = rv, value = 1)
#---------------------
lb1 = Listbox(w,selectmode = EXTENDED)
for i in('Первая встреча', 'Тайна запретного крана', 'Голова заговорила',
'Смерть или убийство', 'Жертвы большого города',
'Новые обитатели лаборатории', 'Головы развлекаются',
'Небо и земля', 'Порок и добродетель', 'Мертвая Диана',
'Сбежавший экспонат', 'Допетая песня', 'Женщина-загадка',
'Веселая прогулка', 'В Париж', 'Жертва Керна', 'Лечебница Равино',
'Сумасшедшие', 'Трудный случай в практике', 'Новенький',
'Побег', 'Между жизнью и смертью', 'Опять без тела',
'Тома умирает во второй раз', 'Заговорщики',
'Испорченный триумф', 'Последнее свидание'):
lb1.insert(END,i)
#--------------------
l1 = Label(w, text = 'Оглавление')
l2 = Label(w, text = 'Фон')
#--------------------
b1 = Button(w,text = 'Открыть главу', command = Open)
b2 = Button(w,text = 'изменить фон', command = BG)
btl = Button(w,text = 'Предыдущая глава', command = previous)
btr = Button(w, text = 'Следующая глава', command = following)
#--------------------
f.pack()
f2.pack()
l2.pack(pady = 10)
r1.pack()
r2.pack()
b2.pack(pady = 10)
l1.pack()
lb1.pack(pady = 10)
b1.pack(side = TOP)
btl.pack(side = LEFT, padx = 5)
btr.pack(side = RIGHT, padx = 5)
Size = 16
size = 14
def UP():
global Size
global size
Size+=1
size+=1
text.tag_add('TTT', 1.0, '1.end')
text.tag_config('TTT', font=("Verdana", Size, 'bold'), justify = CENTER)
text.tag_add('ttt', 2.0, END)
text.tag_config('ttt',font=("Arial", size))
def DOWN():
global Size
global size
Size-=1
size-=1
text.tag_add('TTT', 1.0, '1.end')
text.tag_config('TTT', font=("Verdana", Size, 'bold'), justify = CENTER)
text.tag_add('ttt', 2.0, END)
text.tag_config('ttt',font=("Arial", size))
def Open():
text.delete(1.0,END)
n = lb1.get(lb1.curselection())
n = n+'.txt'
f = open(n)
s = f.read()
text.insert(1.0,s)
text.tag_add('TTT', 1.0, '1.end')
text.tag_config('TTT', font=("Verdana", Size, 'bold'), justify = CENTER)
text.tag_add('ttt', 2.0, END)
text.tag_config('ttt',font=("Arial", size))
f.close()
def BG():
if rv.get() == 1:
text['bg'] = '#EBE1A3'
elif rv.get() == 0:
text['bg'] = 'white'
x = 0
y = 0
def popup(event):
global x, y
x = event.x
y = event.y
menu.post(event.x_root, event.y_root)
def previous():
N = list(lb1.curselection())
N[0] = N[0]-1
N = tuple(N)
n = lb1.get(N)
n = n+'.txt'
f = open(n)
s = f.read()
text.insert(1.0,s)
text.tag_add('TTT', 1.0, '1.end')
text.tag_config('TTT', font=("Verdana", Size, 'bold'), justify = CENTER)
text.tag_add('ttt', 2.0, END)
text.tag_config('ttt',font=("Arial", size))
f.close()
def following():
N = list(lb1.curselection())
N[0] = N[0]+1
N = tuple(N)
n = lb1.get(N)
n = n+'.txt'
f = open(n)
s = f.read()
text.insert(1.0,s)
text.tag_add('TTT', 1.0, '1.end')
text.tag_config('TTT', font=("Verdana", Size, 'bold'), justify = CENTER)
text.tag_add('ttt', 2.0, END)
text.tag_config('ttt',font=("Arial", size))
f.close()
root = Tk()
root.title('Reader')
root.geometry('+0+0')
menu = Menu(tearoff=0)
menu.add_command(label = "Увеличить текст", command = UP)
menu.add_command(label = "Уменьшить текст", command = DOWN)
text = Text(width=140, height=50, bg='white', wrap=WORD)
text.bind("<Button-3>", popup)
scroll = Scrollbar(command=text.yview)
scroll.pack(side=RIGHT, fill=Y)
text.config(yscrollcommand=scroll.set)
bt = Button(root,text = 'Начать читать', command = df)
text.pack()
bt.pack()
root.mainloop()