试图为我的平视窗口设置一个背景。我有一个方形的背景图像,它的边缘逐渐变黑,然后主窗口有一个黑色的背景。图像被放置在背景上,如果窗口比它高,图像中心在中间的黑色背景,这一切看起来都非常好。
然而,当窗口在宽度和高度上小于图像时,它将图像的中心放在窗口的中心,所以你看不到整个图像,它看起来有点奇怪。是否有一种调整图像大小的方法,以便如果窗口的最大宽度和高度小于图像,则将图像调整到该大小,保持高宽比。
假设背景图像是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()
不确定是否有办法在平纹机上这样做?或者,如果我编写自己的函数,根据窗口大小调整图像大小,但是,如果用户在任何时候调整窗口大小,则图像需要相对平稳和快速地调整大小。
发布于 2021-10-16 12:02:39
我已经创建了一个函数,用于在取消et后使用方法调用一次调整大小。
def on_resize(self, evt):
if self.inter == 0:
self.inter = 1
self.minuteur = self.fenetrePrincipale.after(100, self.endResize)
else:
self.minuteur = self.fenetrePrincipale.after_cancel(self.minuteur)
self.minuteur = self.fenetrePrincipale.after(100, self.endResize)
def endResize(self):
self.inter = 0
self.fenetrePrincipale.background = self.fenetrePrincipale.background.resize((self.fenetrePrincipale.winfo_width(), self.fenetrePrincipale.winfo_height()))
self.pixi = ImageTk.PhotoImage(self.fenetrePrincipale.background)
self.canvas.configure(width=self.fenetrePrincipale.winfo_width(), height=self.fenetrePrincipale.winfo_height())
self.canvas.create_image(0, 0, anchor=NW, image=self.pixi)
这里是原理,在定义了定时器和在结束时要被召回的函数之后,after_cancel清理定时器,因此函数的每一次迭代都清理并启动计时器,在最后一次调整定时器大小的迭代中,定时器将保持触发状态。有关“取消”和“后”计时器的更多信息:去油后
https://stackoverflow.com/questions/24061099
复制相似问题