我一直在努力使我的代码正常工作。我的目标是打开图像,然后单击按钮或仅按一个键,图像应移至下一张图像。 下面是我尝试过的代码,但是它无法正常工作,我无法提出一种更好的方法来解决此问题...
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
答案 0 :(得分:0)
当您单击画布时,此代码会更改图像(不仅是图像)。
我在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()
但是此代码仅将第一张图像更改为第二张图像。它不会更改为第二,而是第一。