【问题标题】:Adding an Image to a Canvas using askopenfilename()使用 askopenfilename() 将图像添加到画布
【发布时间】:2015-02-28 14:10:00
【问题描述】:

在使用filedialog.askopenfilename() 从我的 PC 中选择后,我正在尝试将 .gif 图像放入画布。如果我满足以下条件,画布将拍摄图像:

  1. 不要把它放在def
  2. 不要使用filedialog,但我不明白为什么这不起作用...
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)

【问题讨论】:

标签: python image tkinter filedialog


【解决方案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)   

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

【讨论】:

    猜你喜欢
    • 2015-05-19
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2020-04-30
    • 2015-06-25
    • 1970-01-01
    相关资源
    最近更新 更多