Python 如何使Tkinter中的标签只获得空空间而不是整个窗口

Python 如何使Tkinter中的标签只获得空空间而不是整个窗口,python,python-3.x,user-interface,tkinter,tkinter-label,Python,Python 3.x,User Interface,Tkinter,Tkinter Label,我有一个Tkinter应用程序,我希望标签完全占据空白(因为我已经将标签设置为我的应用程序的背景图片)。但是当我没有指定标签的高度和宽度时,它也会像下面的代码一样吞噬框架。如何使其位于框架下方,但占用空间 代码--> #导入所有内容 从tkinter进口* 从pypresence导入Presence 导入时间 #创建根窗口 root=Tk() 尺寸='800x500' #设置窗口 bg=PhotoImage(文件=r'C:\Users\Hunter\Desktop\school 1\module

我有一个Tkinter应用程序,我希望标签完全占据空白(因为我已经将标签设置为我的应用程序的背景图片)。但是当我没有指定标签的高度和宽度时,它也会像下面的代码一样吞噬框架。如何使其位于框架下方,但占用空间

代码-->

#导入所有内容
从tkinter进口*
从pypresence导入Presence
导入时间
#创建根窗口
root=Tk()
尺寸='800x500'
#设置窗口
bg=PhotoImage(文件=r'C:\Users\Hunter\Desktop\school 1\module\pbm\bg.png')
窗口=标签(根,bd=0,图像=bg)
window.pack(填充=两者,展开=真,侧面=底部)
#覆盖默认属性
root.overrideredirect(True)
根几何图形(尺寸)
#主标题栏
标题栏=框架(根,背景='#496E82',bd=0,高度=4)
#打包所有小部件
标题栏包装(填充=X,侧面=顶部)
#移动窗口的代码
def get_pos(事件):
xwin=root.winfo_x()
ywin=root.winfo_y()
startx=event.x_root
starty=event.y\u root
ywin=ywin-starty
xwin=xwin-startx
def move_窗口(事件):
几何图形(维度+'+{0}+{1}'。格式(event.x_root+xwin,event.y_root+ywin))
startx=event.x_root
starty=event.y\u root
标题栏绑定(“”,移动窗口)
#绑定标题栏以使其移动
标题栏绑定(“”,获取位置)
#主要的事情
root.mainloop()
您可以使用标签上的
place()
而不是
pack()
来填充可用空间:

#因为标题栏的高度是4
#所以标签高度应该是-4:relheight=1,height=-4
window.place(x=0,y=4,relwidth=1,relheight=1,height=-4)
您可以使用标签上的
place()
而不是
pack()
来填充可用空间:

#因为标题栏的高度是4
#所以标签高度应该是-4:relheight=1,height=-4
window.place(x=0,y=4,relwidth=1,relheight=1,height=-4)

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

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

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

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


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

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

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

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



试着把它放在一个框架内,并设置框架的宽度/高度。您可能还需要使用
pack\u propagate(False)
grid\u propagate(False)
。为什么要使用帧?只需使用
root
即可?酷酷的云,我尝试过使用一个框架,但没有什么不同。我需要任何其他方法来设置背景,使其只占用空白空间,而不是所有窗口…移除框架并使用
root.bind(..)
而不是
title\u bar.bind(..)
?哦,它现在可以工作了。我已经删除了覆盖和工作的基本窗口只有哈哈。标签很好用。我明天醒来时会更好地测试它,这是最后一个午夜rn…试着把它放在一个框架内,并设置框架的宽度/高度。您可能还需要使用
pack\u propagate(False)
grid\u propagate(False)
。为什么要使用帧?只需使用
root
即可?酷酷的云,我尝试过使用一个框架,但没有什么不同。我需要任何其他方法来设置背景,使其只占用空白空间,而不是所有窗口…移除框架并使用
root.bind(..)
而不是
title\u bar.bind(..)
?哦,它现在可以工作了。我已经删除了覆盖和工作的基本窗口只有哈哈。标签很好用。我明天醒来的时候会更好的测试,现在是最后一个午夜了,恩…嘿!谢谢你,但是我不明白
relheight
relwidth
在代码中有什么用。我能了解一下那部分的背景吗?而且,
y
属性不应该设置为
-4
?因为在笛卡尔平面中,如果我没有错的话,当数字低于x轴时,它们是负数…
relheight=1
表示100%的父高度,
relheight=0.5
表示50%的父高度,等等。如果
relheight
height
一起使用,那么最终的高度将是
relheight
+
height
,因此
relheight=1,height=-4
表示100%的父级高度减去4。哦,好的,我将尝试该代码,并告诉你输出!哦,谢谢你提供的背景和信息。我试过了,效果很好。非常感谢你的帮助!嘿!谢谢你,但是我不明白
relheight
relwidth
在代码中有什么用。我能了解一下那部分的背景吗?而且,不应该将
y
属性设置为t