newbie - tkinter - how to do button rollover

John Grayson johngrayson at home.com
Thu May 18 06:57:15 EDT 2000


In article <8fva74$caa$1 at nnrp1.deja.com>,
  leapinglemur00 at my-deja.com wrote:
>
>
> I seem to be missing something -- I'd like to do
> a "rollover" sort of effect with the image on a
> button changing as the mouse goes over it.  I
> know how to respond to the mouse event, but how
> do you change the image?  Is there a method on
> the Button class to set the image?  Is there some
> place in the documentation where I could find
> this?
>
> Thanks a lot...
>

Here is a minimal example. Choose your own images...

from Tkinter import *

class ActiveButton(Button):
    def __init__(self, master, inimage=None, outimage=None,
		 activate=None):
	self.master = master
	self.inI  = PhotoImage(file='icons/%s' % inimage)
	self.outI = PhotoImage(file='icons/%s' % outimage)
        Button.__init__(self, master, command=activate, image=self.outI)

	self.bind('<Any-Enter>', lambda e, state=1, s=self:
                                          s.change(e, state))
	self.bind('<Any-Leave>', lambda e, state=0, s=self:
                                          s.change(e, state))

    def change(self, event, state):
	if state:
	    self.configure(image=self.inI)
	else:
	    self.configure(image=self.outI)

if __name__ == '__main__':
    root = Tk()
    button = ActiveButton(root, inimage='smooth.gif',
                          outimage='tline1.gif',
		          activate=root.destroy)
    button.pack()
    root.mainloop()



Sent via Deja.com http://www.deja.com/
Before you buy.



More information about the Python-list mailing list