#python-3.x #tkinter #python-imaging-library
#python-3.x #tkinter #python-imaging-library
Вопрос:
У меня есть массив путей к изображениям и функция, которая находит пути, связанные с кнопками, на которых я хочу отобразить изображение
Я уже пытался добавить
file_path = photo.name
img = Image.open(file_path)
photo_image = ImageTk.PhotoImage(img)
tk.Label(window, image=photo_image).pack(side=tk.TOP)
для моей функции, но фотографии в конечном итоге получаются слишком большими, и я хочу, чтобы изображения размещались прямо над кнопками, поэтому я знаю точные координаты xy, которые я хочу, чтобы изображения были, мне просто нужен способ получить их там и сделать их меньше
Ответ №1:
Чтобы изменить размер вашего изображения, передайте кортеж размера в пикселях:
img = Image.open("1.bmp").resize((640, 480))
Чтобы разместить ваше изображение прямо над кнопками, вы можете использовать place .
tk.Label(root, image=photo_image).place(x=0,y=0) #change x and y to your desired value
Вы также можете получить текущий loc вашего виджета button, чтобы рассчитать точное местоположение, в котором вам нужна place
ваша метка:
x,y = widget.winfo_x(), widget.winfo_y()
Подводя итог:
import tkinter as tk
from PIL import Image, ImageTk
root = tk.Tk()
root.geometry("500x500")
def place_image():
x, y = button1.winfo_x(), button1.winfo_y()
tk.Label(root, image=photo_image).place(x=x,y=y 20)
button1 = tk.Button(root,text="Click me",command=place_image)
button1.pack()
img = Image.open("1.bmp").resize((400, 300))
photo_image = ImageTk.PhotoImage(img)
root.mainloop()
Ответ №2:
Вы можете разместить метку в определенных координатах пикселей на холсте, используя .place() . Вы также можете определить ширину и высоту метки в пикселях внутри скобок. Поэтому это будет определять ширину и высоту изображения в пикселях.
Например:
tk.Label(window, image=photo_image).place(x=300, y=400, width=200, height=50)
координаты пикселя place () работают так в tkinter (для холста размером 600 на 600 пикселей):
Увеличение координаты X виджета tkinter перемещает его вправо. Увеличение координаты Y виджета tkinter перемещает его вниз.