Самая важная проблема, с которой вы столкнулись, - это то, что ваше изображение не сохраняется для справки.если вы добавите global im_error
в самый верх вашей функции, ваше изображение будет видимым.
При этом есть некоторые проблемы с вашим кодом, которые следует исправить.
Первое: не импортировать вфункция.Вместо этого напишите все свои импорта в верхней части кода.
Второе: я не уверен, почему вы делаете .pack(in_=error_frame)
.Это не то, что действительно нужно.Просто убедитесь, что ваша метка уже назначена на правильный кадр.Аргумент in_
используется редко, и, вероятно, большинство людей никогда не используют его.Я здесь уже два года, и это первый раз, когда я видел, как кто-то использовал этот аргумент.
В-третьих: вы не показали свой импорт для Tkinter, однако, исходя из того, как вы написали свой код, он выглядиткак вы сделали:
import tkinter
from tkinter import *
Это излишне и не очень хорошая идея.Просто сделайте import tkinter as tk
и убедитесь, что вы используете префикс tk.
, где он применяется.
Вот ваш переделанный код:
import tkinter.ttk as ttk
import tkinter as tk
from PIL import ImageTk, Image
def show_toplevel_window():
global im_error
window_linkedin = tk.Toplevel(root)
window_linkedin.geometry('1000x590')
frame = tk.Frame(window_linkedin)
frame.pack()
error_frame = tk.Frame(frame, highlightbackground="green", highlightcolor="green", highlightthickness=1)
error_frame.pack()
error_label = tk.Label(frame, font=("Helvetica Neue", 20), text="It appears there are no results for the selected country")
error_label.pack()
im_error = Image.open("./ressources/images_gui/aw_snap.png")
im_error = im_error.resize((500, 500), Image.ANTIALIAS)
im_error = ImageTk.PhotoImage(file = "./ressources/images_gui/aw_snap.png")
im_error_label = tk.Label(error_frame, image=im_error)
im_error_label.pack()
root = tk.Tk()
show_toplevel_window()
root.mainloop()