繁体   English   中英

如果不调整框架大小以适合图像,则无法设置框架背景图像

[英]Can't set frame background image without frame resizing to fit image

我可以设置主窗口的背景,而不必担心窗口会试图适合背景图像或将小部件推开的图像。

但是,当我尝试对框架执行相同操作时,会变得非常混乱...

我已经尝试了一些方法,但是一切都与调整图像本身的大小有关,并且我不想扭曲图像。 我希望图像在框架中,但不调整框架大小以适合图像。

有没有一种方法可以将图像放置到框架的背景中而不改变框架的大小?

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

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

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)。 框架可以工作,但是我找不到使框架透明的方法,所以我可以将背景保留在根窗口之外。 这就是为什么我坚持尝试将背景图像粘贴到我的框架上,而没有调整框架大小以适合图像的原因。

有没有一种方法可以将图像放置到框架的背景中而不改变框架的大小?

是。 使用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

与许多其他几何图形管理器(例如,打包程序)不同,放置器不会尝试操纵主窗口或从属窗口的父窗口的几何形状(即,它未设置其请求的大小)。 要控制这些窗口的大小,请使它们成为框架和画布之类的窗口,以提供此目的的配置选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM