Как установить точку на изображении в питоне? - PullRequest
0 голосов

Как установить точку на изображении и сохранить ее координаты в базе данных?Например, я открываю изображение, нажимаю на любое место, и появляется красная точка.А слева написано его положение по координатам XY?У меня есть код, который делает это, но без точки на изображении.

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()

1 Ответ

0 голосов
/ 31 мая 2018

Этот код устанавливает точку на холсте, когда вы нажимаете:

from tkinter import *

class Board(Canvas):

    def __init__(self, master=None, **kwargs):
        Canvas.__init__(self, master, **kwargs)
        self.bind('<Button-1'>, self.on_click)
        self.dots = []

    def on_click(self, event):
        r = 1
        x, y = event.x, event.y
        self.dots.append(self.create_oval(x-r, y-r, x+r, y+r))

root = Tk()
Board(root).pack()
root.mainloop()

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...