Tkinter with Python 3.3 : Change colour of button on click

Viewed 17762

So I have been playing with tkinter to try add a gui to a lift simulator project I have written for university. It is not really needed, but I would like to add it.

Here is the code that I currently have.

import tkinter as tk

class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        master.title("Test") #Controls the window title.
        self.pack()
        self.createWidgets()


    def createWidgets(self):
        floors = [i for i in range(41)]
        buttons = []
        xPos = 0
        yPos = 0
        for floor in floors:
            if(yPos == 5):
                xPos = xPos + 1
                yPos = 0
            if(xPos == 8):
                yPos = 2
            self.button = tk.Button(self, width=3, text=floor, 
                command = lambda f=floor: self.pressed(f))
            self.button.grid(row=xPos, column =yPos)
            yPos = yPos +1

        self.QUIT = tk.Button(self, text="QUIT", fg="red",
                    command=root.destroy).grid(row = xPos, column = yPos)

    def pressed(self, index):
        print("number pressed", index)
        self.button.configure(bg = "red")

root = tk.Tk()
app = Application(master=root)
app.mainloop()

This is all fine and dandy other than when the button is pressed it prints out the correct number, but it changes the background of the last button (number 40) to red, not the one pressed.

If you could let me know what needs correcting that would be great.

Thanks

1 Answers
Related