问题
I've been trying to make a function run when I click a rectangle on a tk canvas.
Here is the code:
from tkinter import *
window = Tk()
c = Canvas(window, width=300, height=300)
def clear():
canvas.delete(ALL)
playbutton = c.create_rectangle(75, 25, 225, 75, fill="red")
playtext = c.create_text(150, 50, text="Play", font=("Papyrus", 26), fill='blue')
c.pack()
window.mainloop()
does anyone know what I should do?
回答1:
You can add tags on the items you want to bind events to.
The event you want here is <Button-1>
, which is left mousebutton.
To apply this to your example, you can do like this:
from tkinter import Tk, Canvas
window = Tk()
c = Canvas(window, width=300, height=300)
def clear():
canvas.delete(ALL)
def clicked(*args):
print("You clicked play!")
playbutton = c.create_rectangle(75, 25, 225, 75, fill="red",tags="playbutton")
playtext = c.create_text(150, 50, text="Play", font=("Papyrus", 26), fill='blue',tags="playbutton")
c.tag_bind("playbutton","<Button-1>",clicked)
c.pack()
window.mainloop()
来源:https://stackoverflow.com/questions/42175815/python-tkinter-canvas-when-rectangle-clicked