是否有在tkinter中显示图像的功能(即任何文件类型)并将其显示为画布上的特定x-y位置

问题描述 投票:0回答:2

我有一个图像路径数组和一个函数,找到连接到我想要显示图像的按钮的路径

我已经尝试过添加

    file_path = photo.name
    img = Image.open(file_path)
    photo_image = ImageTk.PhotoImage(img)
    tk.Label(window, image=photo_image).pack(side=tk.TOP)

我的功能,但照片最终太大,我希望图片放在按钮的正上方,所以我知道我希望图片的确切x-y坐标我只需要一种方法让它们在那里,并使它们更小

python-3.x tkinter python-imaging-library
2个回答
0
投票

要调整图像大小,请传递一个像素大小的元组:

img = Image.open("1.bmp").resize((640, 480))

要将图像放在按钮上方,您可以使用位置。

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
投票

您可以使用.place()将标签放置在画布内的特定像素坐标处。您还可以在括号内定义标签的宽度和高度(以像素为单位)。因此,这将定义图像的宽度和高度(以像素为单位)。

E.g:

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

place()像素坐标在tkinter中的工作方式如下(对于600像素乘600像素的画布):

diagrma

增加tkinter小部件的X坐标会向右移动。增加tkinter小部件的Y坐标会将其向下移动。

© www.soinside.com 2019 - 2024. All rights reserved.