zef*_*cka 0 python tkinter python-3.x
将鼠标悬停在按钮上时如何更改图像?我需要当你将鼠标悬停在按钮 1 或 2 上时图片会发生变化:
Photo1 = (file='Image\ProgrammingButton')
Photo2 = (file='Image\DesignButton')
But1 = (root, image=Photo1)
But2 = (root, image=Photo2)
Run Code Online (Sandbox Code Playgroud)
悬停时
Photo1 = (file='Image\ActiveProgrammingButton')
Photo2 = (file='Image\ActiveDesignButton')
Run Code Online (Sandbox Code Playgroud)
Tkinter 有“进入”和“离开”事件,您必须将它们绑定到某个函数,并且可以使用该config方法更改图像。
这是一个演示:
from tkinter import *
from PIL import Image, ImageTk
def onEnter(event):
global img
img = ImageTk.PhotoImage(Image.open(r'img2'))
btn.config(image=img)
def onLeave(event):
global img
img = ImageTk.PhotoImage(Image.open(r'img1'))
btn.config(image=img)
root = Tk()
img = ImageTk.PhotoImage(Image.open(r'img1'))
btn = Button(root, image=img)
btn.pack()
btn.bind('<Enter>', onEnter)
btn.bind('<Leave>', onLeave)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
如果您希望许多按钮都具有这种效果。我建议您创建自己的按钮来继承该类Button。
这是一个例子。
感谢@furas 的建议。这是更新后的类
class Btn(Button):
def __init__(self, root, img1, img2, *args, **kwargs):
super().__init__(root, *args, **kwargs)
self.img = ImageTk.PhotoImage(Image.open(img1))
self.img2 = ImageTk.PhotoImage(Image.open(img2))
self['image'] = self.img
self.bind('<Enter>', self.enter)
self.bind('<Leave>', self.leave)
def enter(self, event):
self.config(image=self.img2)
def leave(self, event):
self.config(image=self.img)
Run Code Online (Sandbox Code Playgroud)
使用方法:只需在img1和img2参数中指定您的图像路径即可
这是一个例子:
img = r'path1'
img2 = r'path2'
btn = Btn(root, img1=img, img2=img2)
btn.pack()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1740 次 |
| 最近记录: |