I'm confused by why nothing happens when the button is clicked. No error is thrown. Also, when trying to reference the controller via self.controller.get_page("Page2).Method(), nothing happened.
Tried to use lambda, but to no avail.
import tkinter as tk
class Main(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.geometry("200x200")
container = tk.Frame(self)
container.grid(row=0, column=0)
self.frames = {}
for F in (Page1, Page2):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0)
self.show_frame(Page1)
def show_frame(self, page_name):
frame = self.frames[page_name]
frame.tkraise()
def get_page(self, page_name):
return self.frames[page_name]
class Page1(tk.Frame): # login page
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.p2 = Page2(parent="", controller=self)
self.button = tk.Button(self, text="Cmd", command=self.otherchange)
self.button.pack()
def otherchange(self):
self.p2.changelbl()
class Page2(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.lbltochange = tk.Label(self, text="Label to change", bg="red")
self.lbltochange.pack()
def changelbl(self):
self.lbltochange.config(bg="blue")
app = Main()
app.mainloop()