2017-05-05 45 views
0

我可以设置主窗口的背景,我不需要担心窗口试图适应背景图像或图像推出的小部件的方式。无法设置框架的背景图像没有框架调整大小,以适应图像

然而,当我试图做同样的它成为一个巨大的混乱框架...

我已经尝试了一些东西,但可能与调整图像本身的一切接缝和我不想要扭曲图像。我希望图像在框架中,而不是调整框架大小以适应图像。

有没有办法将图像放入框架的背景中,而不会改变框架的大小?

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

所以这是我的一个背景图像添加到主窗口:

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)。这些框架可以工作,但我找不到使框架透明的方法,这样我就可以从我的根窗口保留背景。这就是为什么我试图在背景图片上粘贴框架,但没有调整框架大小以适应图片的原因。

+0

当我在主窗口中为背景图像(我的屏幕大小)运行第一个片段时,它将调整窗口大小。 – martineau

+0

我的主窗口有一个设置的开始大小,我可以在打开程序后对其进行调整。 –

回答

2

有没有办法将图像放入框架的背景中,而不会改变框架的大小?

是的。使用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优于使用gridpack。这是官方文件说,怎么样place

不像许多其他几何图形管理器(如封隔器)砂矿不作任何企图操控主窗口的几何形状或从窗户父母(即它没有设置他们所需的尺寸)。为了控制这些窗口的大小,使它们像窗口一样的窗口和为此提供配置选项的画布。

+0

我不想在根窗口中显示图像。我想在框架中。 –

+0

@SierrMountainTech:然后让它成为框架的孩子。 –

+0

'TLbg =标签(FrameTL,图像= bgImage)'将图像放在框架中,但框架然后调整大小以适应图像。 –