Python: после нажатия на изображение захватите координаты x, y и закройте изображение - PullRequest
0 голосов
/ 22 октября 2019

Я нашел фрагмент кода, который открывает изображение и печатает x, y места, по которым пользователь щелкает, однако изображение остается открытым. Как я могу закрыть изображение и завершить код после того, как пользователь щелкнет один раз? Я, наверное, упускаю что-то простое здесь. Вот мой код:

import tkinter
from PIL import Image, ImageTk


window = tkinter.Tk(className="bla")

size = 500, 500
image = Image.open("sample.png")
image.thumbnail(size, Image.ANTIALIAS)
canvas = tkinter.Canvas(window, width=image.size[0], height=image.size[1])
canvas.pack()
image_tk = ImageTk.PhotoImage(image)
canvas.create_image(image.size[0]//2, image.size[1]//2, image=image_tk)

def callback(event):
    print ("clicked at: ", event.x, event.y)
    return (0)

canvas.bind("<Button-1>", callback)
tkinter.mainloop()

1 Ответ

2 голосов
/ 22 октября 2019

Вам просто нужно уничтожить окно с помощью функции destroy(). Вот пример. Извините за небольшой твик, который я сделал, учитывая, что у меня нет ImageTk .

import tkinter
from PIL import Image

window = tkinter.Tk(className="bla")

size = 500, 500
image = Image.open("sample.png")
image.thumbnail(size, Image.ANTIALIAS)
canvas = tkinter.Canvas(window, width=image.size[0], height=image.size[1])
canvas.pack()
image_tk = tkinter.PhotoImage(file="sample.png") #Tweak
canvas.create_image(image.size[0]//2, image.size[1]//2, image=image_tk)

def callback(event):
    print ("clicked at: ", event.x, event.y)
    <b>window.destroy()</b>

canvas.bind("", callback)
tkinter.mainloop()
...