问题描述
正如所讨论的那样,是否可以上传照片并使其具有相关性? 我正在尝试将图像上传到我的 GUI,但它不是相对的,因此当您最大化窗口时,不幸的是它的大小存在问题。
我想在调整窗口大小时动态更改图像大小
一些示例代码:
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,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,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()