Есть ли функция для отображения изображения в tkinter (то есть любого типа файла) и отображения его в качестве определенной x-y позиции на холсте - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть массив путей к изображениям и функция, которая находит пути, связанные с кнопками, на которых я хочу отобразить изображение

Я уже пытался добавить

    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, я хочу, чтобы изображения были, мне просто нужен способ, чтобы получить их там и сделать их меньше

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Чтобы изменить размер изображения, передайте кортеж размером в пикселях:

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

Вы можететакже получите текущее местоположение вашего виджета кнопки, чтобы вычислить точное местоположение, где вам нужно 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()
0 голосов
/ 12 апреля 2019

Вы можете разместить метку в определенных пиксельных координатах на холсте, используя .place (). Вы также можете определить ширину и высоту метки в пикселях внутри скобок. Поэтому он будет определять ширину и высоту изображения в пикселях.

например:

tk.Label(window, image=photo_image).place(x=300, y=400, width=200, height=50)

place () Пиксельные координаты работают так же в tkinter (для холста размером 600 на 600 пикселей):

diagrma

Увеличение координаты X виджета tkinter перемещает его вправо. Увеличение координаты Y виджета tkinter перемещает его вниз.

...