我最近开始编码,并决定从python开始。我想制作一个程序,该程序从文件打开对话框中加载图像,然后在我的root()中显示该图像。那行得通,但是当我将加载部件放到函数中时,它会显示应该放置图像的空间,但是没有图像。我的代码是:
from tkinter import *
from tkinter import filedialog
from shutil import copyfile
from PIL import ImageTk, Image
import numpy as np
import cv2
root = Tk()
#root.withdraw()
topFrame = Frame(root)
topFrame.pack()
bottomFrame = Frame(root)
bottomFrame.pack(side=BOTTOM)
def odaberiSliku():
root.filename = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
img = (root.filename)
copyfile(img,"test.jpg")
#root.deiconify()
photo = ImageTk.PhotoImage(Image.open("test.jpg"))
label = Label(bottomFrame, image=photo)
label.pack()
return
button_load = Button(topFrame, text="Odaberi sliku", command=odaberiSliku)
button_load.pack()
root.mainloop()
我得到一个这样的窗口:
谢谢。
答案 0 :(得分:0)
由于photo
是函数中的局部变量,因此与它关联的任何对象(在您的情况下为图像)在返回时都会被销毁。换句话说,函数返回后,没有更多图像可显示。解决方案:将变量设为全局变量。
def odaberiSliku():
global photo
# Your code follows