Hi Guys,
Here I am trying to create a very simple function to change a Frame background color as by a btn event handling as following:

from Tkinter import *

class App:
   def __init__(self, parent):
    self.myParent = parent
    self.fm = Frame(parent)
    self.fm.pack()

    self.btnBlue = Button(self.fm, text = "Blue")
    self.btnBlue.bind("<Button-1>", self.make_blue)
    self.btnBlue.pack()

   def make_blue(self, event):
    self.fm = Frame(self.fm, bg="blue").pack()

root = Tk()
root.title ("Color Option")
app = App(root)
root.mainloop()

as you can see I have a button which is suppose to change the Frame's back ground color to BLUE but every time that I click on the button it just create a vertical thin line at bottom of the button and if you continue clicking it increase!
Can you please take a look at this code and let me know what I am doing wrong?

Thanks

Edited 5 Years Ago by Behseini: n/a

Here is a solution

from Tkinter import *

class App:
   def __init__(self, parent):
    self.myParent = parent
    self.fm = Frame(parent, width=400, height=300)
    self.fm.pack_propagate(0) # to keep the frame size
    self.fm.pack()

    self.btnBlue = Button(self.fm, text = "Blue", command=self.make_blue)
    self.btnBlue.pack()

   def make_blue(self):
    # Don't create new widgets, configure existing ones
    self.fm.configure(bg="blue")

root = Tk()
root.title ("Color Option")
app = App(root)
root.mainloop()

Edited 5 Years Ago by Gribouillis: n/a

Comments
Good help

Gribouillis,
I appreciate your time and thanks for your clear and perfect reply

Edited 5 Years Ago by Behseini: n/a

This question has already been answered. Start a new discussion instead.