标签未在 Tkinter 中将图片显示为背景
Label not showing a Picture as a background in Tkinter
#importing everything
from tkinter import *
from PIL import Image
#making the root window
root = Tk()
dimension = '800x500'
#setting the window
im = Image.open(r'C:\Users\Hunter\Desktop\school 1\module\pbm\bg.png')
bg = PhotoImage(im)
window = Label(root, bd=0, height=70, width=50)
window.image=bg
window.pack(fill=Y, expand=True, side=BOTTOM)
#overriding the default properties
root.overrideredirect(True)
root.geometry(dimension)
#the main title bar
title_bar = Frame(root, bg='#496E82', bd=0, height=4)
#pack all the widgets
title_bar.pack(fill=X, side=TOP)
#code for moving the window
def get_pos(event):
xwin = root.winfo_x()
ywin = root.winfo_y()
startx = event.x_root
starty = event.y_root
ywin = ywin - starty
xwin = xwin - startx
def move_window(event):
root.geometry(dimension + '+{0}+{1}'.format(event.x_root + xwin, event.y_root + ywin))
startx = event.x_root
starty = event.y_root
title_bar.bind('<B1-Motion>', move_window)
#binding the title bar so that it moves
title_bar.bind('<Button-1>', get_pos)
#main thing
root.mainloop()
当我 运行 上面的代码时,它隐藏了所有内容,它唯一显示的是白色 Window,没有别的。它还在顶部隐藏了框架(标题栏)。但是,当我为标签设置背景颜色时,它也会隐藏所有内容,框架和所有内容,并显示该颜色的 window。我想做的事情是在我的应用程序中添加背景图片,然后在背景图片的顶部添加其他 tkinter 小部件,如标签、按钮等。帮助将不胜感激!!
编辑:
This 是当我从标签中删除 height
和 width
属性时发生的情况。如何使图像也覆盖 y-axis
,而不仅仅是覆盖 x-axis
。而且它还吃掉了顶部的框架。如何解决这一切?
只要图片是png文件,就可以继续使用tk.PhotoImage
,否则使用PIL.ImageTk.PhotoImage
。而 tk.PhotoImage
不接受 PIL
图像对象作为他们的文件,你应该说:
bg = PhotoImage(file=r'image-from-rawpixel-id-2023082-png.png')
...并且您还没有为标签设置 image
选项:
window = Label(root, image=bg, bd=0, height=70, width=50)
编辑: 要获取图像的实际大小,删除标签的 height
和 width
:
window = Label(root, image=bg, bd=0)
您可以使用 place(x=n,y=m)
几何管理器将小部件放在此标签上方。
#importing everything
from tkinter import *
from PIL import Image
#making the root window
root = Tk()
dimension = '800x500'
#setting the window
im = Image.open(r'C:\Users\Hunter\Desktop\school 1\module\pbm\bg.png')
bg = PhotoImage(im)
window = Label(root, bd=0, height=70, width=50)
window.image=bg
window.pack(fill=Y, expand=True, side=BOTTOM)
#overriding the default properties
root.overrideredirect(True)
root.geometry(dimension)
#the main title bar
title_bar = Frame(root, bg='#496E82', bd=0, height=4)
#pack all the widgets
title_bar.pack(fill=X, side=TOP)
#code for moving the window
def get_pos(event):
xwin = root.winfo_x()
ywin = root.winfo_y()
startx = event.x_root
starty = event.y_root
ywin = ywin - starty
xwin = xwin - startx
def move_window(event):
root.geometry(dimension + '+{0}+{1}'.format(event.x_root + xwin, event.y_root + ywin))
startx = event.x_root
starty = event.y_root
title_bar.bind('<B1-Motion>', move_window)
#binding the title bar so that it moves
title_bar.bind('<Button-1>', get_pos)
#main thing
root.mainloop()
当我 运行 上面的代码时,它隐藏了所有内容,它唯一显示的是白色 Window,没有别的。它还在顶部隐藏了框架(标题栏)。但是,当我为标签设置背景颜色时,它也会隐藏所有内容,框架和所有内容,并显示该颜色的 window。我想做的事情是在我的应用程序中添加背景图片,然后在背景图片的顶部添加其他 tkinter 小部件,如标签、按钮等。帮助将不胜感激!!
编辑:
This 是当我从标签中删除 height
和 width
属性时发生的情况。如何使图像也覆盖 y-axis
,而不仅仅是覆盖 x-axis
。而且它还吃掉了顶部的框架。如何解决这一切?
只要图片是png文件,就可以继续使用tk.PhotoImage
,否则使用PIL.ImageTk.PhotoImage
。而 tk.PhotoImage
不接受 PIL
图像对象作为他们的文件,你应该说:
bg = PhotoImage(file=r'image-from-rawpixel-id-2023082-png.png')
...并且您还没有为标签设置 image
选项:
window = Label(root, image=bg, bd=0, height=70, width=50)
编辑: 要获取图像的实际大小,删除标签的 height
和 width
:
window = Label(root, image=bg, bd=0)
您可以使用 place(x=n,y=m)
几何管理器将小部件放在此标签上方。