gpt4 book ai didi

python-3.x - 使用 Tkinter 网格管理器将背景图像调整为窗口大小

转载 作者:行者123 更新时间:2023-12-03 20:20:37 27 4
gpt4 key购买 nike

我不知道如何使用 tkinter 网格管理器将背景图像调整为窗口大小。我的图像单独调整大小,而不调整窗口大小。它与包管理器一起使用,但我想将它与网格管理器一起使用。

from tkinter import *
from PIL import Image, ImageTk

root = Tk()
root.title("Title")
root.geometry("800x600")

class Example(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid(sticky=N+S+E+W)
self.image = Image.open("courbe.gif")
self.img_copy= self.image.copy()
self.background_image = ImageTk.PhotoImage(self.image)

self.background = Label(self, image=self.background_image)
self.background.grid(row =0, column =0,sticky="nsew")
self.background.grid_rowconfigure(0, weight=1)
self.background.grid_columnconfigure(0, weight=1)

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.grid(row =0, column =0,sticky="nsew")
e.grid_rowconfigure(0, weight=1)
e.grid_columnconfigure(0, weight=1)

root.mainloop()

最佳答案

您不应绑定(bind)到背景更改,但窗口( master )会更改。然后您可以使用 master.winfo_width() 获取窗口的新高度和宽度。和 master.winfo_height() .

所以在你的__init__采用

self.master = master
self.master.bind('<Configure>', self._resize_image)

在你的 self._resize_image采用
new_width = self.master.winfo_width()
new_height = self.master.winfo_height()

关于python-3.x - 使用 Tkinter 网格管理器将背景图像调整为窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28043856/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com