如何像在 Button 中一样在 canvas_image 中使用“command”? Tkinter
How to use “command” in canvas_image just like in Button ? Tkinter
我有一个运行良好的代码,但我希望我的图像具有可点击的功能,以便它可以重定向到框架。
from tkinter import *
def onObjectClick1(event):
print("1")
canv.itemconfig(obj1, image=my_pic2)
canv.tag_bind(obj1, '<Leave>', onObjectClick2)
def onObjectClick2(event):
print("2")
canv.itemconfig(obj1, image=my_pic1)
canv.tag_bind(obj1, '<Enter>', onObjectClick1)
root = Tk()
canv = Canvas(root, width=300, height=300)
my_pic1 = PhotoImage(file="start000-before.png")
my_pic2 = PhotoImage(file="start000-after.png")
obj1 = canv.create_image(50,50,image=my_pic1, anchor=NW)
canv.tag_bind(obj1, '<Enter>', onObjectClick1)
canv.tag_bind(obj1, '<Leave>', onObjectClick2)
canv.pack()
root.mainloop()
请帮帮我,我是 Tkinter 的新手。
目前您正在绑定 Enter 和 Leave 事件。要绑定到点击事件,您需要使用 Button-1
canv.tag_bind(obj1, '<Button-1>', onMouseButton1Click)
canvas 和 canvas 小部件不像其他 tkinter 小部件那样支持 command
属性。
您可以在包含普通 tkinter 小部件的 tkinter canvas 中创建一个 window。在下面的示例中,我创建了一个包含按钮的 window。然后可以正常使用command
from tkinter import *
def PressMeCmd():
print("You pressed me")
root = Tk()
canv = Canvas(root, width=300, height=300)
button = Button(canv,text="Press Me",command=PressMeCmd)
window = canv.create_window(0,0,window=button)
canv.pack()
root.mainloop()
您可以使用 create_window()
将 Button
放入 Canvas
:
from tkinter import *
def on_click():
print('button clicked')
root = Tk()
canv = Canvas(root, width=300, height=300)
canv.pack()
my_pic1 = PhotoImage(file="start000-before.png")
my_pic2 = PhotoImage(file="start000-after.png")
btn = Button(canv, image=my_pic1, command=on_click)
btn.bind('<Enter>', lambda e: btn.config(image=my_pic2))
btn.bind('<Leave>', lambda e: btn.config(image=my_pic1))
canv.create_window(50, 50, window=btn, anchor=NW)
root.mainloop()
我有一个运行良好的代码,但我希望我的图像具有可点击的功能,以便它可以重定向到框架。
from tkinter import *
def onObjectClick1(event):
print("1")
canv.itemconfig(obj1, image=my_pic2)
canv.tag_bind(obj1, '<Leave>', onObjectClick2)
def onObjectClick2(event):
print("2")
canv.itemconfig(obj1, image=my_pic1)
canv.tag_bind(obj1, '<Enter>', onObjectClick1)
root = Tk()
canv = Canvas(root, width=300, height=300)
my_pic1 = PhotoImage(file="start000-before.png")
my_pic2 = PhotoImage(file="start000-after.png")
obj1 = canv.create_image(50,50,image=my_pic1, anchor=NW)
canv.tag_bind(obj1, '<Enter>', onObjectClick1)
canv.tag_bind(obj1, '<Leave>', onObjectClick2)
canv.pack()
root.mainloop()
请帮帮我,我是 Tkinter 的新手。
目前您正在绑定 Enter 和 Leave 事件。要绑定到点击事件,您需要使用 Button-1
canv.tag_bind(obj1, '<Button-1>', onMouseButton1Click)
canvas 和 canvas 小部件不像其他 tkinter 小部件那样支持 command
属性。
您可以在包含普通 tkinter 小部件的 tkinter canvas 中创建一个 window。在下面的示例中,我创建了一个包含按钮的 window。然后可以正常使用command
from tkinter import *
def PressMeCmd():
print("You pressed me")
root = Tk()
canv = Canvas(root, width=300, height=300)
button = Button(canv,text="Press Me",command=PressMeCmd)
window = canv.create_window(0,0,window=button)
canv.pack()
root.mainloop()
您可以使用 create_window()
将 Button
放入 Canvas
:
from tkinter import *
def on_click():
print('button clicked')
root = Tk()
canv = Canvas(root, width=300, height=300)
canv.pack()
my_pic1 = PhotoImage(file="start000-before.png")
my_pic2 = PhotoImage(file="start000-after.png")
btn = Button(canv, image=my_pic1, command=on_click)
btn.bind('<Enter>', lambda e: btn.config(image=my_pic2))
btn.bind('<Leave>', lambda e: btn.config(image=my_pic1))
canv.create_window(50, 50, window=btn, anchor=NW)
root.mainloop()