【发布时间】:2019-07-31 14:04:59
【问题描述】:
我有以下 tkinter 示例:
from PIL import Image, ImageTk
import tkinter as tk
root = tk.Toplevel()
container_frame = tk.Frame(master=root)
container_frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
top_frame = tk.Frame(container_frame, background='red')
middle_frame = tk.Frame(container_frame, background='green')
bottom_frame = tk.Frame(container_frame, background='blue')
top_frame.grid(row=0, column=0, sticky='NSEW')
middle_frame.grid(row=1, column=0, sticky='NSEW')
bottom_frame.grid(row=2, column=0, sticky='NSEW')
container_frame.grid_columnconfigure(0, weight=1)
container_frame.grid_rowconfigure(0, weight=1, uniform='container_frame')
container_frame.grid_rowconfigure(1, weight=7, uniform='container_frame')
container_frame.grid_rowconfigure(2, weight=2, uniform='container_frame')
image = Image.open('some_image.png')
photo_image = ImageTk.PhotoImage(image)
label = tk.Label(top_frame, image=photo_image, background='yellow', anchor='w')
label.image = photo_image
label.pack(expand=1, side='left')
root.geometry('1280x720')
root.mainloop()
不幸的是,label 中的image 没有被缩小以正确适应top_frame。 这是为什么?
此外,当我调整窗口大小时,label(因此image)根本不会调整大小。再说一次,这是为什么?
感谢您的帮助。
【问题讨论】:
-
标签从不调整图像大小 - 你必须自己做。您必须使用
PIL生成具有新尺寸的图像。 -
示例如何使用
bind('<Configure>')在图像改变大小时运行函数 - 此函数使用 PIL 生成新大小的图像:furas/python-examples/tkinter/resize-image-in-background/
标签: python python-3.x image tkinter label