On Wednesday, July 27, 2016 at 10:00:47 PM UTC-4, Rick Johnson wrote: > 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! > > > Yes, Rick's code works great. Well, could you go a little further? I > > > wish to pop out an image, while clicking the circle button. I mean, when > > > the circle button was clicked, an image is displayed. 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