尝试为我的Tkinter窗口设置背景。我有一个方形的背景图像,该图像在边缘周围逐渐变为黑色,然后主窗口具有黑色背景。图像放置在背景上,并且如果窗口宽于其高度,则图像将自身居中于黑色背景的中间,这一切看起来都很好。
但是,当窗口的宽度和高度小于图像的宽度时,它将图像的中心置于窗口的中心,因此您看不到整个图像,并且看起来有些奇怪。有没有一种调整图像大小的方法,以便如果窗口的宽度和高度中的最大值小于图像,则将图像调整为该大小,并保持宽高比。
所以说背景图片是600x600
:
800x400
窗口中,图像不会调整大小,而是将自身垂直居中。500x400
窗口中,图像将调整为500x500
,并且仍将自身垂直居中。400x900
窗口中,图像不会调整大小,而是将自身水平居中。居中功能已经存在,我只需要调整大小功能。
目前我拥有的是:
from tkinter import *
root = Tk()
root.title("Title")
root.geometry("600x600")
root.configure(background="black")
background_image = PhotoImage(file="Background.gif")
background = Label(root, image=background_image, bd=0)
background.pack()
root.mainloop()
不确定在tkinter中是否有这样做的方法?或者,也许我会编写自己的函数来根据窗口大小调整图像大小,但是如果用户在任何时候调整窗口大小,则图像都需要相对平滑且快速地调整大小。
这是一个示例应用程序,它使用Pillow在标签更改大小时调整标签上图像的大小:
from tkinter import *
from PIL import Image, ImageTk
root = Tk()
root.title("Title")
root.geometry("600x600")
root.configure(background="black")
class Example(Frame):
def __init__(self, master, *pargs):
Frame.__init__(self, master, *pargs)
self.image = Image.open("./resource/Background.gif")
self.img_copy= self.image.copy()
self.background_image = ImageTk.PhotoImage(self.image)
self.background = Label(self, image=self.background_image)
self.background.pack(fill=BOTH, expand=YES)
self.background.bind('<Configure>', self._resize_image)
def _resize_image(self,event):
new_width = event.width
new_height = event.height
self.image = self.img_copy.resize((new_width, new_height))
self.background_image = ImageTk.PhotoImage(self.image)
self.background.configure(image = self.background_image)
e = Example(root)
e.pack(fill=BOTH, expand=YES)
root.mainloop()
这是使用Lenna图像作为示例的工作方式:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句