如何在不破坏 GUI 的情况下在 Tkinter 中单击 canvas_image 时执行该功能?
How to execute the function when click on canvas_image in Tkinter without spoiling the GUI?
我有一个代码可以在光标悬停在图像上时将图像从 my_pic1
更改为 my_pic2
并且工作正常但是如果我想执行 on_click
函数我该怎么办当用户点击图像时 (my_pic1
) ?
from tkinter import *
def on_click():
print('clicked')
def onObjectClick1(event):
canv.itemconfig(obj1, image=my_pic2)
canv.tag_bind(obj1, '<Leave>', onObjectClick2)
def onObjectClick2(event):
canv.itemconfig(obj1, image=my_pic1)
canv.tag_bind(obj1, '<Enter>', onObjectClick1)
root = Tk()
canv = Canvas(root, width=300, height=300)
background = PhotoImage(file="background.gif")
canv.create_image(300,300,image=background)
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()
我用过 Button
,但它给图像背景设置了白色,这破坏了 GUI 的外观和感觉。
这是我添加按钮后的代码,
from tkinter import *
def on_click():
print('clicked')
root = Tk()
canv = Canvas(root, width=300, height=300)
canv.pack()
background = PhotoImage(file="background.gif")
canv.create_image(300,300,image=background)
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()
我对 Tkinter 非常陌生!请帮助我!!!!
左键单击事件是“<1>”,因此:
from tkinter import *
def on_click(event=None): # add the event parameter
print('clicked')
def onObjectClick1(event=None):
canv.itemconfig(obj1, image=my_pic2)
def onObjectClick2(event=None):
canv.itemconfig(obj1, image=my_pic1)
root = Tk()
canv = Canvas(root, width=300, height=300)
background = PhotoImage(file="background.gif")
canv.create_image(300,300,image=background)
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.tag_bind(obj1, '<1>', on_click)
canv.pack()
root.mainloop()
我有一个代码可以在光标悬停在图像上时将图像从 my_pic1
更改为 my_pic2
并且工作正常但是如果我想执行 on_click
函数我该怎么办当用户点击图像时 (my_pic1
) ?
from tkinter import *
def on_click():
print('clicked')
def onObjectClick1(event):
canv.itemconfig(obj1, image=my_pic2)
canv.tag_bind(obj1, '<Leave>', onObjectClick2)
def onObjectClick2(event):
canv.itemconfig(obj1, image=my_pic1)
canv.tag_bind(obj1, '<Enter>', onObjectClick1)
root = Tk()
canv = Canvas(root, width=300, height=300)
background = PhotoImage(file="background.gif")
canv.create_image(300,300,image=background)
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()
我用过 Button
,但它给图像背景设置了白色,这破坏了 GUI 的外观和感觉。
这是我添加按钮后的代码,
from tkinter import *
def on_click():
print('clicked')
root = Tk()
canv = Canvas(root, width=300, height=300)
canv.pack()
background = PhotoImage(file="background.gif")
canv.create_image(300,300,image=background)
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()
我对 Tkinter 非常陌生!请帮助我!!!!
左键单击事件是“<1>”,因此:
from tkinter import *
def on_click(event=None): # add the event parameter
print('clicked')
def onObjectClick1(event=None):
canv.itemconfig(obj1, image=my_pic2)
def onObjectClick2(event=None):
canv.itemconfig(obj1, image=my_pic1)
root = Tk()
canv = Canvas(root, width=300, height=300)
background = PhotoImage(file="background.gif")
canv.create_image(300,300,image=background)
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.tag_bind(obj1, '<1>', on_click)
canv.pack()
root.mainloop()