如何在 tk.TopLevel() 上设置背景图片
How to setup a background image on a tk.TopLevel()
我正在尝试为 tk.TopLevel() window 添加背景。
我已成功使用如下相同的代码将背景添加到 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)
这是脚本的执行结果。 Top window 是主要的 window,bottom window 是 TopLevel。背景必须相同。
我无法 post 图片,因为我的帐户是新帐户,但你会发现我得到的结果 here。
知道为什么它不起作用吗?
PhotoImage
中存在错误。
Garbage Collector
将图像分配给函数中的局部变量时从内存中删除图像,然后您就看不到图像了。
您必须将图像分配给全局变量或某个小部件。通常分配给显示此图像的 Label
:
background_label.image = background_image
文档:PhotoImage
我正在尝试为 tk.TopLevel() window 添加背景。
我已成功使用如下相同的代码将背景添加到 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)
这是脚本的执行结果。 Top window 是主要的 window,bottom window 是 TopLevel。背景必须相同。 我无法 post 图片,因为我的帐户是新帐户,但你会发现我得到的结果 here。 知道为什么它不起作用吗?
PhotoImage
中存在错误。
Garbage Collector
将图像分配给函数中的局部变量时从内存中删除图像,然后您就看不到图像了。
您必须将图像分配给全局变量或某个小部件。通常分配给显示此图像的 Label
:
background_label.image = background_image
文档:PhotoImage