Я работаю над задачей, в которой я показываю изображение пользователю.Пользователь щелкнет в любом месте на изображении, и координаты будут напечатаны.
Библиотека Tkinter canvas
используется для отображения изображения пользователю, пользователю разрешено щелкнуть в любом месте изображения.
В чем проблема с функцией printcoords()
- почему она ничего не отображает?
Вот код.
from Tkinter import *
import ImageTk
from PIL import Image, ImageDraw
from Tkinter import Tk, Menu, Canvas
if __name__ == '__main__':
#function on mouse click
def printcoords(event):
print "tahir"
#outputting x and y coords to console
data.append([event.x,event.y])
print data
#mouseclick event
root = Tk()
img = Image.open("eurecat1.png")
# Draw grid
step_count = 50
draw = ImageDraw.Draw(img)
y_start = 0
y_end = img.height
step_size = int(img.width / step_count)
for x in range(0, img.width, step_size):
line = ((x, y_start), (x, y_end))
draw.rectangle(line, fill="black")
x_start = 0
x_end = img.width
for y in range(0, img.height, step_size):
line = ((x_start, y), (x_end, y))
draw.rectangle(((x_start,y), (x_end, y)), fill="black")
# loadImage(canvas, img)
filename = ImageTk.PhotoImage(img)
canvas = Canvas(root,height=img.size[0],width=img.size[0])
canvas.image = filename # <--- keep reference of your image
canvas.create_image(0,0,anchor='nw',image=filename)
canvas.pack()
canvas.config(scrollregion=canvas.bbox(ALL))
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)
data=[]
#function on mouse click
def printcoords(event):
print "tahir"
#outputting x and y coords to console
data.append([event.x,event.y])
print data
#mouseclick event
canvas.bind("<Button 1>", printcoords)
root.mainloop()