[Tkinter] changing the frame colour - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: [Tkinter] changing the frame colour (/thread-17828.html) |
changing the frame colour - nick123 - Apr-25-2019 I want to change the background of a frame using four colour buttons placed at four corners of the frame. I was trying by adding only one button in the frame and changing the color when button is pressed but its not changing the color when the button is in the frame and works when the button is in the window. import tkinter as tk root = tk.Tk() root.geometry("100x100") frame = tk.Frame(root, height=100, width=100) def change_bg(): frame.config(background='red') button = tk.Button(frame, text="Paint",command=change_bg) button.pack() frame.pack() root.mainloop() RE: changing the frame colour - wuf - Apr-25-2019 Hi nick123 Now it should work: import tkinter as tk root = tk.Tk() root.geometry("100x100") frame = tk.Frame(root, height=100, width=100) def change_bg(): frame.config(background='red') button = tk.Button(frame, text="Paint",command=change_bg) button.pack() frame.pack(fill='both', expand=True) root.mainloop()wuf :-) RE: changing the frame colour - nick123 - May-14-2019 It worked ! Thank You wuf! RE: changing the frame colour - LegacyCoding - Jul-24-2020 (Apr-25-2019, 02:13 PM)nick123 Wrote: I want to change the background of a frame using four colour buttons placed at four corners of the frame. I tried this and I get the error: Heres my code:import tkinter as tk def rgb_to_hex(rgb): return '#%02x%02x%02x' % rgb root = tk.Tk() r = tk.StringVar(root) g = tk.StringVar(root) b = tk.StringVar(root) r.set(0) g.set(0) b.set(0) def update(rgb): global preview hex = rgb_to_hex(rgb) preview.config(background=hex) def set_r(val): r.set(val) update((int(r.get()), int(g.get()), int(b.get()))) def set_g(val): g.set(val) def set_b(val): b.set(val) preview = tk.Frame(root, height=200, width=200, bg=rgb_to_hex((0, 0, 0))).place(relx=0.5, rely=0.2, anchor=tk.CENTER) tk.Label(root, textvariable=r).place(relx=0.25, rely=0.8, anchor=tk.CENTER) tk.Scale(root, command=set_r, showvalue=0, to=255, length=500, width=50).place(relx=0.25, rely=0.5, anchor=tk.CENTER) tk.Label(root, textvariable=g).place(relx=0.5, rely=0.8, anchor=tk.CENTER) tk.Scale(root, command=set_g, showvalue=0, to=255, length=500, width=50).place(relx=0.5, rely=0.5, anchor=tk.CENTER) tk.Label(root, textvariable=b).place(relx=0.75, rely=0.8, anchor=tk.CENTER) tk.Scale(root, command=set_b, showvalue=0, to=255, length=500, width=50).place(relx=0.75, rely=0.5, anchor=tk.CENTER) root.mainloop() RE: changing the frame colour - LegacyCoding - Jul-24-2020 I fixed it, turns out that you cannot do var = Label(root).place()There goes my cheat method out of the window! |