On Wednesday, July 27, 2016 at 7:15:20 PM UTC-5, MRAB wrote: > On 2016-07-28 00:13, huey.y.ji...@gmail.com wrote: > > On Wednesday, July 27, 2016 at 4:18:29 PM UTC-4, huey.y...@gmail.com wrote: > >> Hi Folks, > >> > >> It is common to put a BUTTON on a canvas by the means of coding. However, > >> in my application, I need to draw a circle on canvas, and then make this > >> circle to work as if it is a button. When the circle is clicked, it > >> triggers a new image to be displayed. Somebody can help? Thanks! > > > > ---> By the way, the GUI is TK. > > > Here's a simple example: > > > #! python3.5 > # -*- coding: utf-8 -*- > import tkinter as tk > > def mouse_clicked(event): > dist_sq = (event.x - circle['x']) ** 2 + (event.y - circle['y']) ** 2 > > if dist_sq <= circle['radius'] ** 2: > print('Clicked inside circle') > > root = tk.Tk() > > canvas = tk.Canvas(root, width=400, height=200) > canvas.pack() > > circle = dict(x=60, y=60, radius=20) > > left = circle['x'] - circle['radius'] > top = circle['y'] - circle['radius'] > right = circle['x'] + circle['radius'] > bottom = circle['y'] + circle['radius'] > > canvas.create_oval((left, top, right, bottom), outline='red', fill='red') > canvas.bind('<Button-1>', mouse_clicked) > > root.mainloop()
I didn't try your code, but you can simply it by using some of the core functionality provided via "canvas.tag_bind(...)" ## START CODE ## import Tkinter as tk def cb_canvasButton(event): print 'You clicked me using button {0}'.format(event.num) canvas.move('button', 10, 10) # Little extra surprise! root = tk.Tk() canvas = tk.Canvas(root) canvas.create_oval(10,10,50,50, outline='red', fill='blue', tags=('button',) ) canvas.tag_bind('button', '<Button>', cb_canvasButton) canvas.pack() root.mainloop() ## END CODE ## -- https://mail.python.org/mailman/listinfo/python-list