我创建的代码似乎有一些问题。我正在尝试使用两个按钮在我的Tkinter画布上创建图像。
由于某些原因,我的按钮在单击时不会返回任何错误,但它们也不会在画布中显示图像。
有人能帮我找出代码中的错误是什么吗?提前感谢!
请注意,当创建两个图像的代码在定义的函数之外运行时,它确实成功地在画布上创建了图像,问题是按钮没有正确执行命令
import tkinter
from tkinter import ttk
from tkinter import *
import PIL.Image
import PIL.ImageTk
root = Tk()
canvas = Canvas(root)
canvas.pack()
canvas.config(width=300, height= 500,background = 'white')
def previewpng():
photo = PhotoImage( file = 'C:/Users/Admin/Documents/logo.png')
png_preview = canvas.create_image(150,150, image = photo)
def preview():
Imagetif = PIL.Image.open( "C:/Users/Admin/Documents/sampledata.tif")
Im = PIL.ImageTk.PhotoImage(Imagetif)
preview = canvas.create_image( relx = 0, rely= 0, image = Im )
#creating buttons
button= ttk.Button (root, text= 'View preview of PNG')
button.pack()
button.config( command = previewpng )
button2= ttk.Button (root, text= 'View Preview of Tif file')
button2.pack()
button2.config( command = preview )
root.mainloop()
您在函数previewpng()
中创建图像,当函数退出时,包含图像引用的变量被垃圾收集,ant tkinter再也找不到它了。
在每个功能中添加一行以保存图像参考:
def previewpng():
photo = PhotoImage( file = 'pilner.png')
png_preview = canvas.create_image(150,150, image = photo)
canvas.image = photo # Save image reference
def preview():
Imagetif = PIL.Image.open( "beear.tif")
Im = PIL.ImageTk.PhotoImage(Imagetif)
preview = canvas.create_image(50, 50, image = Im )
canvas.image2 = Im # Save image reference