Python Pillow Tkinter,销毁图像,
我最近在玩Tkinter和Pillow这两个库,做一个项目,目前我已经实现了一个可以点击的图片。当我点击这个图片时,它会打印出“图片被点击了”。不过,我希望在显示文本之前,图片就被删除掉。我试过用img.destroy(),但出现了一个错误,提示img没有定义。我觉得问题可能是我不太明白在哪里改了名字之类的。任何帮助都非常感谢!:)
from tkinter import *
from PIL import Image, ImageTk
SWH = Tk()
SWH.geometry("1024x950+130+0")
SWH.title("ServiceWhiz.")
def printimage():
load = Image.open("hello.gif")
render = ImageTk.PhotoImage(load)
img = Button(SWH, image=render,command=imgpress)
img.image = render
img.place(x=0,y=0)
return;
def imgpress():
img.destroy()
Label1 = Label(SWH, text="Image has been clicked",fg="#0094FF",font=('Arial',20)).pack()
return;
SWTitle = Label(SWH, text="ServiceWhiz.",fg="#0094FF",font=('Arial',20)).pack()
MyButtonTest = Button(SWH, text="Click Me.",fg="White",bg="#0094FF",command=printimage).pack()
相关问题:
1 个回答
1
你需要在你的printimage函数外面定义一个“img”变量(和SWH在同一层级)。如果你把img定义在函数里面,它只能在那个函数里使用。通过添加global img,我们告诉函数里面的img是指外面那个全局的值。这样做通常不是个好主意,所以建议你考虑把处理程序放到一个类里面,这样可以保持状态并为你存储img。
试着这样做:
from tkinter import *
from PIL import Image, ImageTk
SWH = Tk()
SWH.geometry("1024x950+130+0")
SWH.title("ServiceWhiz.")
img = None
def printimage():
global img
load = Image.open("hello.gif")
render = ImageTk.PhotoImage(load)
img = Button(SWH, image=render,command=imgpress)
img.image = render
img.place(x=0,y=0)
return;
def imgpress():
global img
img.destroy()
Label1 = Label(SWH, text="Image has been clicked",fg="#0094FF",font=('Arial',20)).pack()
return;
SWTitle = Label(SWH, text="ServiceWhiz.",fg="#0094FF",font=('Arial',20)).pack()
MyButtonTest = Button(SWH, text="Click Me.",fg="White",bg="#0094FF",command=printimage).pack()