亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有一種方法可以使用 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 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號