Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Помогите с не сложным вопросом по tkinter [RSS Feed]

#1 Апрель 6, 2015 21:22:02

VasiliyTolmachev
Зарегистрирован: 2015-04-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с не сложным вопросом по tkinter

Есть вот такое изображение.

Цель: при нажатии на определенный квадратик на изображении в две строки 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)

Офлайн

#2 Апрель 6, 2015 22:16:43

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Помогите с не сложным вопросом по tkinter

Подправил.

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

Но делать так нежелательно. Проще отследить положение мышки и высчитать по-ней квадрат. Как - я намекнул в функции but. Если повесить обработчик события <Button-1> на canvas все может получиться

P.S. Код не айс. Править очень много, поэтому я пас Ну и самое главное. while здесь ни к селу ни к городу.

Офлайн

#3 Апрель 6, 2015 22:40:00

VasiliyTolmachev
Зарегистрирован: 2015-04-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с не сложным вопросом по tkinter

спасибо

Офлайн

  • Начало
  • » GUI
  • » Помогите с не сложным вопросом по tkinter[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version