当前位置: 首页 > 面试题库 >

如何显示图片并获得鼠标点击坐标

锺离刚洁
2023-03-14
问题内容

我想知道是否可以在Python(Windows)中显示某些图片,然后用鼠标单击该图片并获得此点击相对于图片边缘的坐标。

谢谢!


问题答案:

是的,一旦您了解了tkinter,这是可能并且非常容易的,这是一个快速脚本:

from Tkinter import *
from tkFileDialog import askopenfilename
import Image, ImageTk

if __name__ == "__main__":
    root = Tk()

    #setting up a tkinter canvas with scrollbars
    frame = Frame(root, bd=2, relief=SUNKEN)
    frame.grid_rowconfigure(0, weight=1)
    frame.grid_columnconfigure(0, weight=1)
    xscroll = Scrollbar(frame, orient=HORIZONTAL)
    xscroll.grid(row=1, column=0, sticky=E+W)
    yscroll = Scrollbar(frame)
    yscroll.grid(row=0, column=1, sticky=N+S)
    canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
    canvas.grid(row=0, column=0, sticky=N+S+E+W)
    xscroll.config(command=canvas.xview)
    yscroll.config(command=canvas.yview)
    frame.pack(fill=BOTH,expand=1)

    #adding the image
    File = askopenfilename(parent=root, initialdir="C:/",title="Choose an image.")
    img = ImageTk.PhotoImage(Image.open(File))
    canvas.create_image(0,0,image=img,anchor="nw")
    canvas.config(scrollregion=canvas.bbox(ALL))

    #function to be called when mouse is clicked
    def printcoords(event):
        #outputting x and y coords to console
        print (event.x,event.y)
    #mouseclick event
    canvas.bind("<Button 1>",printcoords)

    root.mainloop()

未经编辑的它将使用默认的窗口坐标系打印到控制台。画布小部件将左上角设为0,0点,因此您可能需要弄混printcoords函数。要获取加载的图片尺寸,可以使用canvas.bbox(ALL),并且可能要切换到使用canvasx和canvasy坐标,而不是原来的样子。如果您不熟悉tkinter;谷歌应该能够帮助您从这里完成它:)。



 类似资料:
  • 本文向大家介绍python点击鼠标获取坐标(Graphics),包括了python点击鼠标获取坐标(Graphics)的使用技巧和注意事项,需要的朋友参考一下 使用Python进行图像编程,要使用到Graphics库。下面列举出较常用的代码 接下来使用Graphics库进行编写 出现下面问题:name '_name_'is not defined.出现原因是下划线应该是两个(__'name'__)

  • 本文向大家介绍Three.js获取鼠标点击的三维坐标示例代码,包括了Three.js获取鼠标点击的三维坐标示例代码的使用技巧和注意事项,需要的朋友参考一下 由于工作需要,但是对于three.js又是一窍不通,网上的资料又很少,所以上来就让我获取坐标,真是一个头两个大。好歹最后终于实现了。 既然已经是想要获取鼠标点击的三维坐标了,相信你camera对象和scene都已经有了,如果不了解的小伙伴,可以

  • 问题内容: 将click事件处理程序添加到canvas元素(将返回click的x和y坐标)(相对于canvas元素)的最简单方法是什么? 不需要旧版浏览器兼容性,Safari,Opera和Firefox都可以。 问题答案: 这个答案很老了,它使用检查不再需要的旧浏览器,因为和属性在所有当前浏览器中都有效。您可能想查看PatriquesAnswer,以获得更简单,最新的解决方案。 最初的答案: 正如

  • 我试图在图片框上获取鼠标点击坐标,并将信息放入文本框中。 我可以在表单中获取鼠标单击坐标,但无法在picturebox中获取鼠标坐标(当我在picturebox中单击时,不会发生任何事情)。我已经看过了stackoverflow类似问题的答案,但似乎没有什么对我有用。 这是我的完整代码:

  • 问题内容: JFreeChart中是否有一种方法可以从ChartMouseEvent中确定鼠标悬停在绘图空间中的x,y坐标?我尝试使用域十字线值,但这似乎不准确并且滞后于实际的鼠标事件。 谢谢, 杰夫 问题答案: 鼠标坐标相对于ChartPanel,因此您需要对其进行转换:

  • 类似于微信的头像点击放大显示效果。 [Code4App.com]