0

I plan to write a program that allows the user to move shapes around on the canvas once they are drawn. A given shape will be drawn when an appropriate button is pressed. I'm using simple test programs to learn my way around. I've looked at a number of examples and I think the test code below should print the mouse coordinates when the shape is clicked. But it seems on_click() is never called. What am I doing wrong?
I'm using pythhon 2.7.6 on OSX 10.6.8
Thanks for your help.

import Tkinter as tk

def on_click(e):
    print e.x, e.y

def createShape(e):
    txt = e.widget.cget('text')

    cnvs.create_rectangle(10,10,75,60, tags="click")
    cnvs.tag_bind("click", '<ButtonPress-1>', on_click)
    cnvs.create_text(45, 40, text = txt)


root = tk.Tk()
root.wm_resizable(0,0)
frame = tk.Frame(root, background="blue")
frame.pack()

cnvsHt = 800
cnvsWidth = 1000
cnvs = tk.Canvas(frame, width=cnvsWidth, height=cnvsHt, background = "#faf0e6")
cnvs.pack()

btnABC = tk.Button(frame, text="ABC", bg="blue", highlightbackground="blue", fg="white")
btnABC.pack()
btnABC.bind("<Button-1>", createShape)

root.mainloop()

Edited by rbyrd

2
Contributors
1
Reply
14
Views
3 Years
Discussion Span
Last Post by vegaseat
0

Only responds when you click on the border of the rectangle.
You have to fill the rectangle with eg. white to make the whole shape respond.

Edited by vegaseat

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.