Python 特金特公司;PIL:删除图像
我正在尝试编写一个简单的应用程序,在按下按钮后显示随机电影的海报。 问题:我不知道如何在显示下一个图像之前删除一个图像(因此它们不会相互堆叠,如下图所示:) 我的缩写代码:Python 特金特公司;PIL:删除图像,python,tkinter,python-imaging-library,Python,Tkinter,Python Imaging Library,我正在尝试编写一个简单的应用程序,在按下按钮后显示随机电影的海报。 问题:我不知道如何在显示下一个图像之前删除一个图像(因此它们不会相互堆叠,如下图所示:) 我的缩写代码: from tkinter import * from tkinter import ttk import random from PIL import ImageTk, Image mlist = ['resized.jpg', 'cat.jpg'] class App(Frame): def __init__(
from tkinter import *
from tkinter import ttk
import random
from PIL import ImageTk, Image
mlist = ['resized.jpg', 'cat.jpg']
class App(Frame):
def __init__(self, master):
ttk.Frame.__init__(self, master, padding='5')
self.grid(column=0, row=0, sticky=(N, W, E, S))
self.create_button()
self.name = ttk.Label()
self.image = ttk.Label()
def create_button(self):
self.button = ttk.Button(self,
text="Press me",
width=12,
command=lambda: self.display()
).grid(column=0, row=2, columnspan=2, pady=10, sticky=N)
def display(self):
self.name.destroy()
k = random.randrange(0, 2)
self.name = ttk.Label(self, font=(None, 16), text=mlist[k])
self.image = Image.open(mlist[k])
poster = ImageTk.PhotoImage(self.image)
display = ttk.Label(self, image=poster)
display.my_image = poster
display.grid(row=2, column=3, rowspan=3)
self.name.grid(row=0, rowspan=2, column=3)
root = Tk()
root.title("Test")
root.geometry("550x575")
app = App(root)
root.mainloop()
我认为,我应该在“self.image”上应用类似于“self.name.destroy()”的内容。但是没有这样的方法。。。那么如何解决呢 通过使用
canvas
小部件,您可以更好地控制图像。它包括一个删除显示的图像的方法。当我尝试时,您的代码似乎工作正常。最初没有图像,按下按钮后显示resized.jpg
,然后按下另一个按钮后显示cat.jpg
。我在代码中看到的一个显然不相关的潜在问题是,将调用ttk.Button.grid()
方法的结果分配给self.Button
。grid()
方法返回None
。使用canvas
小部件可以更好地控制图像。它包括一个删除显示的图像的方法。当我尝试时,您的代码似乎工作正常。最初没有图像,按下按钮后显示resized.jpg
,然后按下另一个按钮后显示cat.jpg
。我在代码中看到的一个显然不相关的潜在问题是,将调用ttk.Button.grid()
方法的结果分配给self.Button
。grid()
方法返回None
。