是否可以在 tkinter 中使上传的照片真实?

Is it possible to make an uploaded photo realtive in tkinter?

问题是可以上传照片并使其相关吗? 我正在尝试将图像上传到我的 GUI,但它不是相对的,所以当你最大化 window 时,不幸的是它的大小有问题。

我想在 window 调整大小时动态更改图像大小

一些示例代码:

import tkinter as tk
from PIL import ImageTk, Image

HEIGHT, WIDTH = 640, 700
root = tk.Tk()
canvas0 = tk.Canvas(height=HEIGHT, width=WIDTH)
canvas0.pack()

canvas = tk.Canvas(bg='black')
canvas.place(relx=0, rely=0, relheight=1, relwidth=1)

frame = tk.Frame(canvas, bg='#009900')
frame.place(relx=0.12, y=2, rely=0, relwidth=0.75, relheight=1)

column_1_img = Image.open('column.png')
column_1_img = ImageTk.PhotoImage(column_1_img)
column_label_1 = tk.Label(canvas, image=column_1_img)
column_label_1.image = column_1_img
column_label_1.place(relheight=1, relwidth=0.2)

root.mainloop()

此代码产生此输出: Not fullscreen Fullscreen

我想要一张图片自动调整到标签大小,你有什么想法吗?

<Configure> 绑定到事件处理程序并使用 PIL 的 resize 方法调整图像大小。

这是一个例子:

import tkinter as tk
from PIL import ImageTk, Image

def resize_image(event):
    column_label_1.resized = ImageTk.PhotoImage(column_1_img.resize((event.width, event.height), resample = Image.NEAREST))
    column_label_1['image'] = column_label_1.resized

HEIGHT, WIDTH = 640, 700
root = tk.Tk()
canvas0 = tk.Canvas(height=HEIGHT, width=WIDTH)
canvas0.pack()

canvas = tk.Canvas(bg='black')
canvas.place(relx=0, rely=0, relheight=1, relwidth=1)

frame = tk.Frame(canvas, bg='#009900')
frame.place(relx=0.12, y=2, rely=0, relwidth=0.75, relheight=1)

column_1_img = Image.open(r'img_path')
column_img = ImageTk.PhotoImage(column_1_img)

column_label_1 = tk.Label(canvas, image=column_img)
column_label_1.image = column_1_img
column_label_1.place(relheight=1, relwidth=0.2)
column_label_1.bind('<Configure>', resize_image)

root.mainloop()