Как настроить фоновое изображение на tk.TopLevel ()

Пытаюсь добавить фон в окно tk.TopLevel ().

Мне удалось использовать тот же код, что и ниже, для добавления фона в tk.Tk (). Однако тот же код не работает и оставляет мне фон по умолчанию.

def add_window_launching():
    #initializing window
    add_window=tk.Toplevel()
    add_window.title("Inventaire Petits Débrouillards")
    add_window.geometry('900x350')
    add_window.resizable(width=False, height=False)

    #Setting background
    raw_image=Image.open("C:/Users/Ordinateur/Desktop/db-update-petits-debrouillards/UI/ajout.png")
    background_image=ImageTk.PhotoImage(raw_image)
    background_label = tk.Label(add_window, image=background_image)

    #Adding widgets
    welcome_text=tk.Label(add_window, text="Text")
    object_description=tk.Label(add_window, text="Description de l'objet :")
    description_entry=tk.Entry(add_window, width=100)
    row=SQL.Entries([description_entry], add_window)
    submit_button=tk.Button(add_window, text="Ajouter", command=row.adding_entry)

    #Organizing window
    background_label.place(x=0, y=0, relwidth=1, relheight=1)
    welcome_text.place(anchor="n", relx=0.5, rely=0.25)
    object_description.place(anchor="nw", relx=0.08, rely=0.5)
    description_entry.place(anchor="ne", relx=0.92, rely=0.5)
    submit_button.place(anchor="n", relx=0.5, rely=0.75)

Вот результат выполнения скрипта. Верхнее окно - главное окно, нижнее - окно верхнего уровня. Фон должен быть идентичным. Я не могу публиковать изображения, потому что моя учетная запись новая, но вы увидите результат, который я получил здесь. Есть идеи, почему это не работает?


person MorganL    schedule 11.07.2019    source источник


Ответы (1)


Ошибка в PhotoImage.

Garbage Collector удаляет изображение из памяти, когда оно назначается локальной переменной в функции, а затем вы не видите изображение.

Вы должны назначить изображение глобальной переменной или какому-либо виджету. Популярно назначать Label, который отображает это изображение:

 background_label.image = background_image

Документ: PhotoImage

person furas    schedule 11.07.2019