T.insert(tkinter.END, text)
должны появиться в функциях load_next_img
и load_previous_img
. Для меня самый простой способ - определить класс Slides, чтобы получить правильное пространство имен. Примечание для обновления метки используйте self.label.configure(image=tk_image)
Ниже приведен пример, где я закомментировал фрейм данных, но должен дать подсказку о том, как решить. Примечание, чтобы очистить текст. Я также добавил строку self.T.delete('1.0', tkinter.END)
import tkinter
from PIL import Image, ImageTk
import base64
import pandas as pd
class Slides:
def __init__(self):
self.text_array = ['hello there', 'good bye']
self.pic_array = ['test_1.jpg', 'test_2.jpg']
self.root = tkinter.Tk()
nextbutton = tkinter.Button(text="next", command=self.load_next_img)
nextbutton.pack()
backbutton = tkinter.Button(text="back", command=self.load_previous_img)
backbutton.pack()
self.slide_image = tkinter.Label(self.root)
self.slide_image.pack(side="bottom", fill="both", expand="yes")
self.text_box = tkinter.Text(self.root, height=10, width=30)
self.text_box.pack()
self.i = -1
self.load_next_img()
self.root.mainloop()
def load_next_img(self):
self.i += 1
# base64string = df_slides["Slide_Image"][i]
# imgdata = base64.b64decode(base64string)
pil_image = Image.open(self.pic_array[self.i % 2])
pil_image = pil_image.resize((200, 200), Image.ANTIALIAS) # just for my convenience
tk_image = ImageTk.PhotoImage(image=pil_image)
self.slide_image.configure(image=tk_image)
self.slide_image.image = tk_image
text = self.text_array[self.i % 2]
self.text_box.delete('1.0', tkinter.END)
self.text_box.insert(tkinter.END, text)
def load_previous_img(self):
self.i -= 1
# base64string = df_slides["Slide_Image"][i]
# imgdata = base64.b64decode(base64string)
pil_image = Image.open(self.pic_array[self.i % 2])
pil_image = pil_image.resize((200, 200), Image.ANTIALIAS) # just for my convenience
tk_image = ImageTk.PhotoImage(image=pil_image)
self.slide_image.configure(image=tk_image)
self.slide_image.image = tk_image
text = self.text_array[self.i % 2]
self.text_box.delete('1.0', tkinter.END)
self.text_box.insert(tkinter.END, text)
def main():
slides = Slides()
if __name__ == '__main__':
main()
. Чтобы правильно расположить кнопки, метки и текст, я бы посоветовал использовать grid
вместо pack
.
PS. Я позволил себе изменить переменные label
на slide_image
и T
на text_box