Непонятно, как вы собираетесь работать с функцией OpenFile()
.Почему бы не позволить Подушке открыть изображение, см. Мой пример.
В моем примере я создаю ярлык для хранения изображения первым.Я настраиваю его на отображение изображения только тогда, когда у меня есть изображение для показа.
Я устанавливаю рамку метки на определенный размер и использую grid_propagate()
, чтобы не допустить изменения размера, когда я показываю изображение в прилагаемой метке.
Изображение появляется в верхнем левом углу рамки.Вы можете изменить это, рассчитав соответствующий отступ по размеру изображения и т. Д.
Это было то, что вы хотели?
from tkinter import ttk
from tkinter import *
from tkinter.filedialog import askopenfilename
from PIL import ImageTk, Image
root = Tk()
root.title("python gui")
root.geometry("500x400")
def OpenFile():
name = askopenfilename(initialdir=".",
filetypes =(("JPEG FILE", "*.jpg"),
("PNG FilES","*.png"),
("bitmap","*.bmp")),
title = "Choose a file.")
print (name)
try:
pillow_img = Image.open(name) # Open image with Pillow
tk_img = ImageTk.PhotoImage(image=pillow_img) # Convert to PhotoImage
original_frame.config(image=tk_img) # Put in label
original_frame.image = tk_img # Save reference to image
except:
print("Can't read file")
buttone = Button(root, text="select image", command=OpenFile)
buttone.grid(row=1,column=0)
labelframe3 = LabelFrame(root, text="original image", width=200, height=200)
labelframe3.grid(column=0, row=0, padx=20, pady=20)
labelframe3.grid_propagate(False)
original_frame = ttk.Label(labelframe3)
original_frame.grid(column=0, row=0, padx=10, pady=10)
root.mainloop()