Кликните по изображениям, используя tkinter - PullRequest
0 голосов
/ 19 октября 2019

У меня есть база данных, содержащая слайды, с именем "df_slides". Теперь я хотел бы отобразить отдельный silde, и когда я нажимаю на кнопку «next», должен отображаться следующий слайд в базе данных. Слайды хранятся в формате base64.

Это то, что я сделал до сих пор:

import tkinter
from PIL import Image, ImageTk
import base64
import pandas as pd

i = 0
def load_next_img():
    global pil_image, tk_image, i

    i = i+1
    base64string = df_slides["Slide_Image"][i]
    imgdata = base64.b64decode(base64string)
    pil_image =  Image.open(io.BytesIO(imgdata))
    tk_image = ImageTk.PhotoImage(pil_image)
    panel = tkinter.Label(root, image = tk_image)
    panel.pack(side = "bottom", fill = "both", expand = "yes")
    label['image'] = tk_image


root = tkinter.Tk()
label = tkinter.Label(root)
label.pack(padx=5, pady=5)
nextbutton = tkinter.Button(text="next", command=load_next_img)

nextbutton.pack()
root.mainloop()

Я только начал с tkinter, и у меня возникли некоторые трудности. По сути, программа работает, но когда я ее открываю, у меня возникают некоторые трудности:

  1. Она открывается, но показывает только «следующую» кнопку

enter image description here

Затем я нажимаю «далее», и затем отображаются два изображения

enter image description here ... затем, когда я продолжаю нажимать «далее», все нормально ион показывает только одно изображение за раз

Редактировать

Если я попытаюсь:

import tkinter
from PIL import Image, ImageTk
import base64
import pandas as pd

i = 0
def load_next_img():
    global pil_image, tk_image, i

    i = i+1
    base64string = df_slides["Slide_Image"][i]
    imgdata = base64.b64decode(base64string)
    pil_image =  Image.open(io.BytesIO(imgdata))
    tk_image = ImageTk.PhotoImage(pil_image)
    label['image'] = tk_image


root = tkinter.Tk()
label = tkinter.Label(root,image = tk_image)
label.pack(side = "bottom", fill = "both", expand = "yes")
nextbutton = tkinter.Button(text="next", command=load_next_img)

nextbutton.pack()
root.mainloop()

Я получу ошибку:

NameError:имя 'tk_image' не определено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...