Как изменить изображение в tkinter с помощью мышки? - PullRequest
0 голосов
/ 06 апреля 2019

Я очень старался, чтобы мой код работал. Моя цель - открыть изображение и, нажав кнопку или просто нажав клавишу, оно должно перейти к следующему изображению. Ниже приведен мой код, который я пробовал, но он не работает, и я не смог придумать лучший способ решить эту проблему ...

import tkinter as tk
from PIL import Image, ImageTk

class ExampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.x = self.y = 0
        self.canvas = tk.Canvas(self, width=700, height=700, cursor="cross")
        self.canvas.pack(side="top", fill="both", expand=True)
        self.image = Image.open("C:\\Users\\Laptop\\Desktop\\test2.jpg").resize((400,400))
        self.photo = ImageTk.PhotoImage(self.image)
        self.canvas.create_image((0, 0), anchor="nw", image=self.photo)

    def update(self):
        self.image = Image.open("C:\\Users\\Laptop\\Desktop\\test2.jpg").resize((400,400))
        self.photo = ImageTk.PhotoImage(self.image)
        self.canvas.create_image((0, 0), anchor="nw", image=self.photo)

if __name__ == "__main__":
    app = ExampleApp()
    app.mainloop()
    app.update()

Было бы здорово, если бы кто-то мог мне помочь: D

1 Ответ

0 голосов
/ 06 апреля 2019

Этот код изменяет изображение, когда вы нажимаете холст (не только изображение).

Я добавил только self.bind('<Button-1>', self.update) и event в def update()

Я использую переменные IMG1, IMG2 только для того, чтобы легко заменить ваши файлы на мои.

import tkinter as tk
from PIL import Image, ImageTk

IMG1 = "C:\\Users\\Laptop\\Desktop\\test2.jpg"
IMG2 = "C:\\Users\\Laptop\\Desktop\\test2.jpg"

class ExampleApp(tk.Tk):

    def __init__(self):
        tk.Tk.__init__(self)
        self.x = self.y = 0
        self.canvas = tk.Canvas(self, width=700, height=700, cursor="cross")
        self.canvas.pack(side="top", fill="both", expand=True)

        self.image = Image.open(IMG1).resize((400,400))
        self.photo = ImageTk.PhotoImage(self.image)
        self.canvas.create_image((0, 0), anchor="nw", image=self.photo)

        self.bind('<Button-1>', self.update)

    def update(self, event):
        self.image = Image.open(IMG2).resize((400,400))
        self.photo = ImageTk.PhotoImage(self.image)
        self.canvas.create_image((0, 0), anchor="nw", image=self.photo)

if __name__ == "__main__":
    app = ExampleApp()
    app.mainloop()

Но этот код изменяет только первое изображение на второе. Оно меняется не вторым, а первым.

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