Как настроить фоновое изображение на tk.TopLevel () - PullRequest
0 голосов
/ 11 июля 2019

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

Мне удалось использовать тот же код, что и ниже, чтобы добавить bakground в 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)

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

1 Ответ

1 голос
/ 11 июля 2019

В PhotoImage есть ошибка.

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

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

 background_label.image = background_image

Док: PhotoImage

...