Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t设置帧背景图像而不调整帧大小以适应图像_Python_Image_Tkinter_Frame - Fatal编程技术网

Python Can';t设置帧背景图像而不调整帧大小以适应图像

Python Can';t设置帧背景图像而不调整帧大小以适应图像,python,image,tkinter,frame,Python,Image,Tkinter,Frame,我可以设置主窗口的背景,我不需要担心窗口试图适应背景图像,或者图像会将小部件推开 然而,当我试图对一个框架做同样的事情时,它变成了一个巨大的混乱 我尝试了一些方法,但所有方法都与调整图像大小有关,我不想扭曲图像。我希望图像在帧中,而不是调整帧大小以适应图像 有没有一种方法可以将图像放置在帧的背景中而不改变帧的大小 编辑:注意:我使用的图像足够大,足以填满屏幕,因此如果用户正在调整大小,图像将覆盖所有额外空间 这就是我将背景图像添加到主窗口的方式: bgImage=PhotoImage(file=

我可以设置主窗口的背景,我不需要担心窗口试图适应背景图像,或者图像会将小部件推开

然而,当我试图对一个框架做同样的事情时,它变成了一个巨大的混乱

我尝试了一些方法,但所有方法都与调整图像大小有关,我不想扭曲图像。我希望图像在帧中,而不是调整帧大小以适应图像

有没有一种方法可以将图像放置在帧的背景中而不改变帧的大小

编辑:注意:我使用的图像足够大,足以填满屏幕,因此如果用户正在调整大小,图像将覆盖所有额外空间

这就是我将背景图像添加到主窗口的方式:

bgImage=PhotoImage(file="./Colors/bgImage.png")
bgLable = Label(root,image = bgImage)
bgLable.image = bgImage
bgLable.grid(row=0,column=0,columnspan=3,rowspan=8)
但是,当我尝试对框架执行相同操作时,它也会调整框架的大小:

FrameTL = Frame(root, width = 100)
FrameTL.grid(row = 0, column = 0, rowspan = 20, columnspan = 1, sticky = W+N+S)
TLbg = Label(FrameTL,image = bgImage)
TLbg.image = bgImage
TLbg.grid(row=0,column=0)
我尝试了其他一些方法,但它们会扭曲图像以适合窗口/框架,我不想扭曲图像

编辑:

我找到了各种各样的工作。我没有使用框架,而是将.grid用于我所有的小部件,除了我需要在侧菜单上的小部件。侧菜单小部件没有对准窗口的左上角,所以我尝试使用框架来解决问题(现在使用.place)。框架可以工作,但我找不到一种方法使框架透明,这样我就可以使我的背景远离我的根窗口。这就是为什么我一直在尝试将背景图像添加到帧中,但没有调整帧大小以适应图像的原因

有没有一种方法可以将图像放置在帧的背景中而不改变帧的大小

对。使用带有相对坐标的
放置
。以下内容将把带有图像的标签放置在根窗口的中心,并且不会影响任何其他小部件

some_frame = tk.Frame(root, borderwidth=2, relief="raised", width=200, height=200)
...
background = tk.Label(some_frame, text="I am in the center", background="pink")
background.place(relx=.5, rely=.5, anchor="c")
这是我认为
place
优于
grid
pack
的少数几次。这是官方文档中关于
place
的内容:

与许多其他几何管理器(如封隔器)不同,placer不尝试操纵主窗口或从属窗口父窗口的几何体(即,它不设置其请求的大小)。要控制这些窗口的大小,请将其设置为类似于框架和画布的窗口,以便为此提供配置选项


当我在主窗口中为背景图像(我的屏幕大小)运行第一个代码段时,它会调整窗口的大小。我的主窗口有一个设置的起始大小,我可以在打开程序后进行调整。我不希望图像位于根窗口中。我想把它放在相框中。@SierrMountainTech:然后将它作为相框的子项。
TLbg=Label(FrameTL,image=bgImage)
将把图像放在相框中,但相框会调整大小以适应图像。@SierrMountainTech:不,不会。这是
place
的优点之一,它不会改变包含框架的大小。感谢您在这方面的帮助。我会找一段时间的。我不知道
.place
将是解决方案,也不知道
.place
与其他选项不同,不会处理任何几何体。我感到惊讶的是,我找不到关于这一点的任何其他问题。也许我的措辞对我的问题不准确。