首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tkinter将背景图像调整为窗口大小

Tkinter将背景图像调整为窗口大小
EN

Stack Overflow用户
提问于 2014-06-05 13:07:27
回答 4查看 43K关注 0票数 16

试图为我的平视窗口设置一个背景。我有一个方形的背景图像,它的边缘逐渐变黑,然后主窗口有一个黑色的背景。图像被放置在背景上,如果窗口比它高,图像中心在中间的黑色背景,这一切看起来都非常好。

然而,当窗口在宽度和高度上小于图像时,它将图像的中心放在窗口的中心,所以你看不到整个图像,它看起来有点奇怪。是否有一种调整图像大小的方法,以便如果窗口的最大宽度和高度小于图像,则将图像调整到该大小,保持高宽比。

假设背景图像是600x600

  • 800x400窗口中,图像不调整大小,并且垂直地居中。
  • 500x400窗口中,图像大小调整为500x500,并且仍然垂直地居中。
  • 400x900窗口中,图像不调整大小,并将自身水平地居中。

中心功能已经存在,我只需要调整大小功能。

我目前拥有的是:

代码语言:javascript
运行
复制
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()

不确定是否有办法在平纹机上这样做?或者,如果我编写自己的函数,根据窗口大小调整图像大小,但是,如果用户在任何时候调整窗口大小,则图像需要相对平稳和快速地调整大小。

EN

Stack Overflow用户

发布于 2021-10-16 12:02:39

我已经创建了一个函数,用于在取消et后使用方法调用一次调整大小。

代码语言:javascript
运行
复制
    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清理定时器,因此函数的每一次迭代都清理并启动计时器,在最后一次调整定时器大小的迭代中,定时器将保持触发状态。有关“取消”和“后”计时器的更多信息:去油后

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24061099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档