BBD*_*Sys 7 python python-imaging-library
我想用PIL向用户显示图像,当用户点击此图像的任何位置时,我想要调用def onmousedown(x,y).我会在这个函数中做一些额外的事情.我怎么能在PIL中这样做?
谢谢,
PIL不会单独执行 - PIL是一个没有用户界面的图像处理库 - 它确实有一个show方法,它打开一个显示图像的外部程序,但不与Python进程通信.
因此,为了能够让用户与图像进行交互,必须使用其中一个统一工具包来构建GUI程序以供Python使用 - 更为人所知的是Tkinter,GTK和Qt4.Tkinter很有趣,因为它预先安装了Windows Python安装程序,因此更容易为该系统的用户提供.如果您决定使用其他工具包,Windows用户必须单独下载并安装gtk或qt库才能使用您的程序.
这是一个带有可点击图像的Tkinter应用程序的极简主义示例:
import Tkinter
from PIL import Image, ImageTk
from sys import argv
window = Tkinter.Tk(className="bla")
image = Image.open(argv[1] if len(argv) >=2 else "bla2.png")
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
canvas.bind("<Button-1>", callback)
Tkinter.mainloop()
Run Code Online (Sandbox Code Playgroud)