【发布时间】:2021-03-13 18:32:37
【问题描述】:
当光标悬停在图像上时,我有一个代码可以将图像从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 中很菜鸟!请帮帮我!!!!
【问题讨论】:
标签: python python-3.x user-interface tkinter tkinter-canvas