faqts : Computers : Programming : Languages : Python : Tkinter

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

8 of 15 people (53%) answered Yes
Recently 5 of 10 people (50%) answered Yes

Entry

How can I create a "rollover" effect?

May 19th, 2000 02:37
unknown unknown, John Grayson


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()