如何使 Tkinter 中的标签只为空 space 而不是整个 window

How to make a Label in Tkinter get only empty space and not the whole window

我有一个Tkinter应用程序,我想让Label完全占满空白space(因为我已经将Label设置为我的App的背景图片)。但是当我没有指定标签的高度和宽度时,它也会像下面的代码一样吃掉框架。如何让它在框架下方,但占据空 space???

代码 -->

#importing everything
from tkinter import *
from pypresence import Presence
import time


#making the root window
root = Tk()

dimension = '800x500'
#setting the window
bg = PhotoImage(file = r'C:\Users\Hunter\Desktop\school 1\module\pbm\bg.png')
window = Label(root, bd=0, image=bg)
window.pack(fill=BOTH, 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()

您可以在标签上使用place()代替pack()来填充可用的space:

# As the height of the title bar is 4
# so the label height should be <window height> - 4: relheight=1, height=-4
window.place(x=0, y=4, relwidth=1, relheight=1, height=-4)

如果您将其用作背景图片,最好使用 place。当您使用 place 时,它不会影响 window 或任何其他小部件的几何形状(即:您不必调用 overrideredirect)。

place 允许您以百分比形式指定相对宽度和高度(其中 1 表示宽度或高度的 100%),因此您可以将其始终设置为宽度和window.

的高度

例如,这会将 window 放在左上角并强制标签与 window 一样高和宽:

window.place(x=0, y=0, relwidth=1.0, relheight=1.0)

如果您希望标签居中,您可以将相对的 x 和 y 坐标设置为 .5(例如:宽度或高度的 50%)

window.place(relx=.5, rely=.5, anchor="center")