如何在tk.TopLevel()上设置背景图像

时间:2019-07-11 07:39:37

标签: python user-interface tkinter toplevel

我正在尝试向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之一。背景必须相同。 我无法发布图片,因为我的帐户是新的,但是您会发现我得到here的结果。 任何想法为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

PhotoImage中存在错误。

Garbage Collector将图像分配给函数中的局部变量后,它将图像从内存中删除,然后您将看不到图像。

您必须将图像分配给全局变量或某些小部件。分配给显示该图像的Label很普遍:

 background_label.image = background_image

文档:PhotoImage