почему не показали мои кнопки с изображением. это только показывает изображение, что в нем ошибка? - PullRequest
0 голосов
/ 25 апреля 2020
from tkinter import *
from PIL import ImageTk, Image

root = Tk()
root.title("Image Viewer App")

img1 = ImageTk.PhotoImage(Image.open("../images/1.jpg"))
img2 = ImageTk.PhotoImage(Image.open("../images/2.jpg"))
img3 = ImageTk.PhotoImage(Image.open("../images/3.jpg"))
img4 = ImageTk.PhotoImage(Image.open("../images/4.jpg"))
img5 = ImageTk.PhotoImage(Image.open("../images/5.jpg"))
img6 = ImageTk.PhotoImage(Image.open("../images/6.jpg"))
img7 = ImageTk.PhotoImage(Image.open("../images/7.jpg"))
img8 = ImageTk.PhotoImage(Image.open("../images/8.jpg"))
img9 = ImageTk.PhotoImage(Image.open("../images/9.jpg"))
img10 = ImageTk.PhotoImage(Image.open("../images/10.jpg"))
img11 = ImageTk.PhotoImage(Image.open("../images/11.jpg"))
img12 = ImageTk.PhotoImage(Image.open("../images/12.jpg"))
img13 = ImageTk.PhotoImage(Image.open("../images/samantha.jpg"))
image_list = [img1, img2, img3, img4, img4, img5, img6, img7, img8, img9, img10, img11,img12, img13]

def forward(image_number):
    global my_label
    global btn_back
    global btn_forward

    my_label.grid_forget()
    my_label = Label(image=image_list[image_number-1])
    btn_back = Button(root, text="<<", command=lambda: backward(image_number-1))
    btn_forward = Button(root, text=">>", command=lambda: forward(image_number+1))
    if image_number == 13:
        btn_forward = Button(root, text=">>", state=DISABLED)
    my_label.grid(row=0, column=0, columnspan=3)
    btn_back.grid(row=1, column=0)
    btn_forward.grid(row=1, column=2)

def backward(image_number):
    global my_label
    global btn_back
    global btn_forward
    my_label.grid_forget()
    my_label = Label(image=image_list[image_number - 1])
    btn_back = Button(root, text="<<", command=lambda: backward(image_number - 1))
    btn_forward = Button(root, text=">>", command=lambda: forward(image_number + 1))

    my_label.grid(row=0, column=0, columnspan=3)
    btn_back.grid(row=1, column=0)
    btn_forward.grid(row=1, column=2)

my_label = Label(root, image=img1)
my_label.grid(row=0, column=0, columnspan=3)
btn_back = Button(root, text="<<", command=backward)
btn_exit = Button(root, text="Exit", command=root.quit)
btn_forward = Button(root, text=">>", command=lambda: forward(2))

btn_back.grid(row=1, column=0)
btn_exit.grid(row=1, column=1)
btn_forward.grid(row=1, column=2)

root.mainloop()

1 Ответ

0 голосов
/ 25 апреля 2020

Вы просто используете глобальную переменную. 1) Удалите лямбду и просто поставьте имя функции 2) Далее вы можете добавить другое if / else arg.

image_list = [img1, img2, img3, img4, img4, img5, img6, img7, img8, img9, img10, 
              img11, img12, img13]
img_index = 0


def forword():
    global img_index
    img_index += 1          # THis will help to move img_index by 1

    label = Label(root, image=image_list[img_index])     # with  'image_list[img_index]'  you will get img. name on that index
    label.grid()

def backward():
    global img_index
    img_index -= 1

    label = Label(root, image=image_list[img_index])
    label.grid()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...