Вы получаете такую область, потому что вы вызываете root.destroy
перед загрузкой изображения в окно. Также вы не можете использовать два TK
экземпляра, которые вы должны использовать Toplevel проверьте ссылку, чтобы лучше понять.
Кроме того, чтобы отобразить изображение в toplevel
, вам нужно создать для него ссылку, чтобы оно не собиралось мусором Отображать изображение в окне Toplevel , которое я сделал таким образом label1.image = sub
.
Я также использую image subsample
, чтобы продемонстрировать, как изменить размер изображения sub = photo2.subsample(5, 5)
проверьте эту ссылку , чтобы прочитать об этом
from tkinter import *
def messageWindow():
win = Toplevel()
win.geometry('300x200')
root.withdraw() # THIS HIDE THE WINDOW
photo2 = PhotoImage(file="img/dog1.gif")
sub = photo2.subsample(5, 5)
label1 = Label(win, image=sub)
label1.image = sub
label1.grid(row=6)
Button(win, text='OK', command=win.destroy).grid(row = 5, columnspan = 2)
root = Tk()
photo = PhotoImage(file="img/dog1.gif")
sub1 = photo.subsample(3,3)
label1 = Label(root, image=sub1)
label1.pack()
B = Button(root, text='Bring up Message', command=messageWindow)
B.place(x=200, y=300)
root.mainloop()