Описание просмотра фотографий в GUI - Python - PullRequest
0 голосов
/ 09 января 2020

Я новичок в Python, я ищу решение с этой ошибкой. Я застрял с этим заданием.

Я пытаюсь изменить описание для каждой картинки, но, к сожалению, мне не удалось.

from tkinter import *
from PIL import Image, ImageTk

root = Tk()
root.title("Image Viewer")
root.config(bg = "Grey")

frame1 = Frame(root, width = 500, height = 325, bg = "Silver")
frame1.pack(side = TOP)
frame2 = Frame(root, width = 500, height = 25, borderwidth= 1, bg = "Grey")
frame2.pack(side = BOTTOM, pady= 2)

# Image:
img1 = ImageTk.PhotoImage(Image.open("dec19.jpg"))
img2 = ImageTk.PhotoImage(Image.open("dec20.jpg"))
img3 = ImageTk.PhotoImage(Image.open("dec21.jpg"))

# Description:
des1= Label(frame1, text = "I am happy this day")
des2= Label(frame1, text = "going somewhere")
des3= Label(frame1, text = "Today is a great day")

# , width = 500, height = 315
num = 1
# List:
img_list = [img1, img2,img3]
des_list = [1 , 2, 3]

# Startup:
my_label = Label(frame1,image = img1)
my_label.pack()
my_des = Label(frame1, text = f"Description{num}")
my_des.pack(side = BOTTOM)

#  Definning Command functions:
def close_app():
    exit()

def forward(image_num):
    global my_label
    global prev
    global next1
    global num
    global my_des
    global des_list

    my_label.pack_forget()
    # .grid_forget()
    my_label = Label(frame1, image= img_list[image_num-1])
    my_label.pack()

    my_des.pack_forget()
    my_des = Label(frame1, text = f"Description{des_list[image_num-1]}")
    my_des.pack()
    # .grid(row = 0, column = 0, columnspan = 3)
    next1  = Button(frame2, text = "Next", command = lambda: forward(image_num+1))
    next1.grid(row = 1, column = 2)
    prev = Button(frame2, text = "Previous", command = lambda : back(image_num-1))
    prev.grid(row = 1, column = 0)

    if image_num == 3:
        next1 = Button(frame2, text = "Next", state = DISABLED)
        next1.grid(row = 1, column = 2)

prev = Button(frame2, text = "Previous", state = DISABLED, command =lambda : back(2))
prev.grid(row = 1, column = 0)
exits = Button(frame2, text = "Exit", command = close_app)
exits.grid(row = 1, column = 1)
next1 = Button(frame2, text = "Next", command = lambda: forward(2))
next1.grid(row = 1, column = 2)
root.mainloop()

1 Ответ

0 голосов
/ 09 января 2020

Если вы хотите, чтобы каждое описание было другим, вы можете создать словарь, когда вы привязываете каждый индекс изображения к его описанию

image_description = {
    1 : 'I am happy this day',
    2 : "going somewhere",
    3: "Today is a great day"
}

Теперь, когда у вас есть этот словарь, когда вы вызываете функцию, которая изменяет изображение вместо имея строку stati c, которая меняет только число (f"Description{des_list[image_num-1]}"), вы можете получить данные из словаря

, поэтому измените эти 3 строки

my_des.pack_forget()
my_des = Label(frame1, text = f"Description{des_list[image_num-1]}")
my_des.pack()

на

my_des.configure(text = f"{image_description[image_num]}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...