使用askopenfilename()将图像添加到画布

时间:2015-02-28 14:10:00

标签: python image tkinter filedialog

我正在尝试使用.gif从我的电脑中选择一张filedialog.askopenfilename()图片进入画布。如果我:

,画布将拍摄图像
  1. 请勿将其放在def
  2. 不要使用filedialog,但我不明白为什么这不起作用......
  3. from tkinter import *
    root=Tk()
    root.geometry("600x600")
    root.config(background="#FFFFFF")
    
    canvas = Canvas(width=200,height=200)
    canvas.grid(row=0,column=0)
    
    
    def create_image():
        profileimage = filedialog.askopenfilename()
        i = PhotoImage(file=profileimage)
        canvas.create_image(0,0,image=i)
    
    b = Button(text="Click", command=create_image).grid(row=1,column=0)
    

1 个答案:

答案 0 :(得分:1)

global i       
def create_image(self): 
    global i
    profileimage = filedialog.askopenfilename()
    i = ImageTk.PhotoImage(Image.open(profileimage))
    canvas.create_image(0,0,image=i)   

没有在全局变量中引用图像,图像存储在由垃圾收集器清除的函数的局部变量中。