为了账号安全,请及时绑定邮箱和手机立即绑定

有没有一种方法可以使用 Python 直观地显示我单击的位置。

有没有一种方法可以使用 Python 直观地显示我单击的位置。

慕森卡 2022-12-06 15:39:18
目前我的程序将打开一个图像,使用该图像你可以点击它的任何地方,它会返回你点击位置的像素坐标。从这些坐标中,您可以输入一些文本,它会向您显示编辑后的图像。然而,我想知道是否有一种方法可以在视觉上帮助用户向他们显示他们点击的位置。这是我当前用于打开图像并单击它以返回坐标的代码。我正在使用 tkinter,我知道我应该从 tkinter import * 中退出,但现在为时已晚:/。    ### Function to open files ###img_window = tkinter.PanedWindow(top, orient='vertical')def file_opener():    global actual_img    global original_img    top.filename = filedialog.askopenfilename(initialdir="*/Images/", title ="Select an Image", filetypes=((".png", "*.png"),(".jpg", "*.jpg")))    original_img = Image.open(top.filename)    #################### CLICK LOCATION OF WHERE YOU WANT TO ADD TEXT ####################    event2canvas = lambda e, c: (c.canvasx(e.x), c.canvasy(e.y))    imgApp = tkinter.Toplevel()    # creating an img var of my original image    img = ImageTk.PhotoImage(original_img)    #setting up a tkinter canvas with scrollbars    frame = tkinter.Frame(imgApp, bd=2, relief=tkinter.SUNKEN)    frame.grid_rowconfigure(0, weight=1)    frame.grid_columnconfigure(0, weight=1)    xscroll = tkinter.Scrollbar(frame, orient=tkinter.HORIZONTAL)    xscroll.grid(row=1, column=0, sticky=tkinter.E+tkinter.W)    yscroll = tkinter.Scrollbar(frame)    yscroll.grid(row=0, column=1, sticky=tkinter.N+tkinter.S)    canvas = tkinter.Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set, width = img.width(), height = img.height())    canvas.grid(row=0, column=0, sticky=tkinter.N+tkinter.S+tkinter.E+tkinter.W)    xscroll.config(command=canvas.xview)    yscroll.config(command=canvas.yview)    frame.pack(fill=tkinter.BOTH, expand = 1)    # adding the image to canvas    canvas.create_image(0,0,image=img,anchor="nw")    canvas.config(scrollregion=canvas.bbox(tkinter.ALL))    #function to be called when mouse is clicked    def returncoords(event):        global cx, cy        #outputting x and y coords to console        cx, cy = event2canvas(event, canvas)        return cx, cy
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

这是我的解决方案:当图像被打开时,它会显示 tcross 光标,当用户单击时它会更改光标,直到用户释放。


canvas.create_image(0,0,image=img,anchor="nw")

    canvas.config(cursor = "tcross")

    canvas.config(scrollregion=canvas.bbox(tkinter.ALL))


    # function to be called when mouse is clicked

    def returnCoords(event):

        global cx, cy

        # change the cursor when button is held / click so user knows they selected a coordinate

        canvas.config(cursor = "dotbox")

        cx, cy = event2canvas(event, canvas)

        return cx, cy


    def returnCursor(event):

        canvas.config(cursor = "arrow")

        time.sleep(.7)

        imgApp.destroy()


    # mouseclick event / release

    canvas.bind("<ButtonPress-1>", returnCoords)

    canvas.bind("<ButtonRelease-1>", returnCursor)


查看完整回答
反对 回复 2022-12-06
  • 1 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号