Форум сайта python.su
0
Есть вот такое изображение. 
Цель: при нажатии на определенный квадратик на изображении в две строки h и v должны записываться координаты.
from tkinter import * from PIL import Image, ImageTk main_window=Tk() canv=Canvas(main_window, height=339, width=610, bg="lightblue") b=Image.open('F:/kursovaya/mofis.gif') a=ImageTk.PhotoImage(b) canv.create_image(0,0,image=a,anchor="nw") ent=Text(main_window,width=20,height=10,bd=3) entt=Text(main_window,width=20,height=10,bd=3) def but(event): ent.delete(1.0,END) entt.delete(1.0,END) ent.insert(END,x/16+1) entt.insert(END, y/16+1) y=50 w=1 while y<336: x=33 while x<600: canv.create_rectangle(x,y,x+16,y+16, outline="red", tag=w) canv.tag_bind(w,'<Button-1>',but) x=x+16 w=w+1 y = y + 16 w=w+1 canv.pack() ent.pack() entt.pack() main_window.mainloop()
Traceback (most recent call last): File "F:\kursovaya\89.py", line 21, in <module> canv.tag_bind(w,'<Button-1>',but) File "F:\python 3.2.5\lib\tkinter\__init__.py", line 2205, in tag_bind sequence, func, add) File "F:\python 3.2.5\lib\tkinter\__init__.py", line 980, in _bind self.tk.call(what + (sequence, cmd)) _tkinter.TclError: item "75" doesn't exist
Отредактировано VasiliyTolmachev (Апрель 6, 2015 21:22:33)
Офлайн
39
Подправил.
from Tkinter import * from PIL import Image, ImageTk main_window=Tk() canv=Canvas(main_window, height=339, width=610, bg="lightblue", cursor="dot") #b=Image.open('F:/kursovaya/mofis.gif') #a=ImageTk.PhotoImage(b) #canv.create_image(0,0,image=a,anchor="nw") ent=Text(main_window,width=20,height=10,bd=3) entt=Text(main_window,width=20,height=10,bd=3) def but(event): ent.delete(1.0,END) entt.delete(1.0,END) ent.insert(END, event.x) entt.insert(END, event.y) y=50 w=1 while y<336: x=33 while x<600: tag = canv.create_rectangle(x,y,x+16,y+16, outline="red", activefill="yellow") canv.tag_bind(tag,'<Button-1>', but) x=x+16 w=w+1 y = y + 16 w=w+1 canv.pack() ent.pack() entt.pack() main_window.mainloop()

Ну и самое главное. while здесь ни к селу ни к городу.
Офлайн
0
спасибо
Офлайн